【MySQL】数据库基础

embedded/2024/11/15 4:54:14/

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:MySQL

在这里插入图片描述


目录

👉🏻什么是数据库

数据库是一个组织化的数据集合,通常以一种结构化的形式存储、管理和检索数据。它可以是一个简单的文件,也可以是一个大型的、高度复杂的系统数据库的设计旨在使数据容易访问、管理和更新。它们在许多领域都有广泛的应用,包括企业管理、科学研究、教育、电子商务等等。

数据库通常由一个或多个表组成,每个表包含一系列相关的数据。这些数据按照一定的结构和格式进行组织,并且可以通过查询语言(例如MYSQL)进行检索、更新和删除。数据库还提供了一些功能,如数据完整性约束、安全性控制、事务管理等,以确保数据的一致性、安全性和可靠性。

主流数据库

  • SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  • Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不MySQL。
  • MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  • PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  • SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  • H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

服务器,数据库,表关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多
数据库,一般开发人员会针对每一个应用创建一个数据库
为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:
在这里插入图片描述

数据库本质:在磁盘或者内存中存储的特定结构组织的数据–将来在磁盘上存储的一套数据库服务方案,你给我字段或者要求,我直接给你结果就行

mysql_28">mysql语言创建数据库

以下是在linux环境下演示创建一个数据库的代码示例:

1.创建数据库

create database hellomysql;

/var/lib/mysql目录下可查看创建的数据库目录

2.使用数据库

use helloworld;

3.创建数据库

create table student(id int,name varchar(32),gender varchar(2)
);

1.建立数据库,本质就是Linux下的一个目录
2.在数据库中建表,本质就是目录中的一个个文件

4.表中插入数据

insert into student (id, name, gender) values (1, '张三', '男');
insert into student (id, name, gender) values (2, '李四', '女');
insert into student (id, name, gender) values (3, '王五', '男');

5.查询表中的数据

select * from student;

👉🏻sql分类

SQL(结构化查询语言)是一种用于管理关系型数据库的标准化语言,它可以分为以下几个主要的类别:

  1. 数据查询语言(Data Query Language,DQL)

    • DQL 用于检索数据库中存储的数据,最常见的 DQL 命令是 SELECT。通过 SELECT 命令,可以从数据库中选择需要的数据,并根据条件进行过滤和排序。
  2. 数据操作语言(Data Manipulation Language,DML)

    • DML 用于对数据库中的数据进行操作,包括插入、更新、删除数据等操作。常见的 DML 命令包括 INSERT、UPDATE、DELETE。
  3. 数据定义语言(Data Definition Language,DDL)

    • DDL 用于定义数据库的结构,包括创建和删除数据库、表、索引等对象。常见的 DDL 命令包括 CREATE、DROP、ALTER。
  4. 数据控制语言(Data Control Language,DCL)

    • DCL 用于控制数据库用户的访问权限和安全性,包括授予和撤销权限等操作。常见的 DCL 命令包括 GRANT、REVOKE。
  5. 事务控制语言(Transaction Control Language,TCL)

    • TCL 用于管理数据库中的事务,包括事务的开始、提交、回滚等操作。常见的 TCL 命令包括 COMMIT、ROLLBACK、SAVEPOINT。

这些类别涵盖了 SQL 中常见的命令和操作,用于对数据库进行查询、操作、定义结构和管理安全性等方面的工作。

👉🏻Mysql架构

MySQL 是一个流行的开源关系型数据库管理系统(RDBMS),其架构包括以下主要组件:
在这里插入图片描述

  1. 连接管理器(Connection Manager):负责管理客户端与服务器之间的连接。它处理新的连接请求、验证用户身份、分配线程等。

  2. 查询解析器与优化器(Query Parser and Optimizer):当客户端发送查询请求时,查询解析器负责解析查询语句,将其转换为内部数据结构。优化器则负责分析查询,并尝试找到最有效的执行计划,以提高查询性能。

  3. 存储引擎(Storage Engine):MySQL 支持多种存储引擎,每种引擎都负责管理数据的存储和检索。常见的存储引擎包括 InnoDBMyISAMMemory 等,每种引擎都有其特定的优点和适用场景。

  4. 查询缓存(Query Cache):MySQL 可以缓存查询结果,以提高相同查询的性能。但在一些情况下,查询缓存可能会降低性能,因此在一些版本中已经被弃用。

  5. 日志模块(Logging Module):MySQL 使用多种日志来记录系统活动,包括二进制日志(Binary Log)、错误日志(Error Log)、查询日志(Query Log)等。这些日志对于故障排除、恢复和性能调优都非常重要。

  6. 事务管理器(Transaction Manager):MySQL 支持事务,事务管理器负责实现事务的 ACID 属性(原子性、一致性、隔离性、持久性),以确保数据的完整性和一致性。

  7. 权限与安全模块(Security and Privileges Module):MySQL 提供了灵活的权限管理机制,可以控制用户对数据库、表和其他对象的访问权限。此外,MySQL 还支持 SSL 加密等安全特性。

存储引擎

存储引擎是数据库管理系统中的一个重要组件,负责管理数据的存储和检索。不同的存储引擎具有不同的特性和优缺点,适用于不同的使用场景。

存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法

linux下查看存储引擎

show engines;

在 MySQL 中,常见的存储引擎包括以下几种:

  1. InnoDB

    • InnoDB 是 MySQL 默认的存储引擎,它支持事务和行级锁定,提供了高并发和高可靠性的特性。InnoDB 也支持外键约束、崩溃恢复等功能,适用于大多数 OLTP(联机事务处理)场景。
  2. MyISAM

    • MyISAM 是 MySQL 较早的存储引擎,它不支持事务,但具有较高的性能和简单的结构。MyISAM 适合于读操作频繁、写操作较少的场景,如数据仓库、日志分析等。
  3. Memory

    • Memory 存储引擎将数据存储在内存中,因此具有非常高的读写性能。但是,由于数据存储在内存中,数据库重启时数据会丢失。Memory 引擎适用于临时表、缓存等场景。
  4. Archive

    • Archive 存储引擎专门用于存储归档数据,它采用压缩算法存储数据,适合于数据归档和备份。
  5. CSV

    • CSV 存储引擎将数据以 CSV(逗号分隔值)格式存储在文本文件中,适用于数据导入和导出操作。
  6. Blackhole

    • Blackhole 存储引擎实际上不存储任何数据,它将所有写入操作都忽略,适用于数据复制和分发场景。
  7. NDB Cluster

    • NDB Cluster 存储引擎是 MySQL Cluster 的一部分,它提供了高可用性和分布式存储的特性,适用于大规模的分布式应用。

让我们来用一个幽默的比喻来解释存储引擎的作用:

想象一下你正在组装一座超级豪华的乐高城堡。城堡的不同部分需要用不同类型的乐高块来构建,而每种类型的乐高块都有自己的特性。

  • InnoDB 块:这些块是城堡的主要支柱,非常坚固且能够相互连接。它们负责支撑整个城堡的结构,并确保城堡稳固耐用。当你需要城堡变得更加结实时,InnoDB 块是首选。

  • MyISAM 块:这些块很轻便,快速组装,但不够稳固。它们适合用于城堡的一些简单装饰部分,比如花园中的小树屋或者塔楼的旗杆。虽然它们不够坚固,但在一些不需要太多支撑的地方使用它们可以节省时间和成本

  • Memory 块:这些块非常快速,但它们有一个大问题——它们都是用冰淇淋做的!虽然冰淇淋块组成的城堡看起来很诱人,但一旦太阳一出来,整个城堡就会融化。因此,Memory 块适合用于制作临时的城堡,比如在一个冰雪节庆典上展示一天后就会融化的城堡。

  • Archive 块:这些块非常节省空间,因为它们可以压缩成小小的立方体。它们适合用于城堡中的一些旧档案,比如古老的地图和传说。

通过这个比喻,你可以更好地理解存储引擎的作用:它们就像乐高城堡的不同类型的块一样,负责构建和管理数据库的不同部分,以满足不同的需求和要求。


如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长
在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/embedded/41487.html

相关文章

【MySQL】Mysql——卸载文档(windows版本)

MySQL卸载文档-Windows版 1. 停止MySQL服务 winR 打开运行,输入 services.msc 点击 “确定” 调出系统服务。 停止Mysql服务 2. 卸载MySQL相关组件 打开控制面板 —> 卸载程序 —> 卸载MySQL相关所有组件 3. 删除MySQL安装目录 4. 删除MySQL数据目录 数…

K折交叉验证

交叉验证是一种用于估计机器学习模型技能的统计方法。 它通常在应用机器学习中用于比较和选择给定预测建模问题的模型,因为它易于理解、易于实现,并且所产生的技能估计通常比其他方法具有更低的偏差。 在本教程中,您将简要介绍用于估计机器…

jmeter中HttpClient4发送失败,java方法请求成功

jmeter中HttpClient4请求失败 上传文件时:Httpclient4: 请求体 请求头 响应结果 ,后端服务都总是提示存在非法标签。 jmeter中使用java请求成功 修改使用java方式,访问正常; 根据分析可能因为HC4对一些特殊字符会进行转义,转义后…

Linux 生态与工具

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 目录 Linux生态简介:Linux工具lrzsz&#xff…

SpringBoot TestRestTemplate

SpringBoot TestRestTemplate 1 什么是 TestRestTemplate ?2 为什么使用 TestRestTemplate?3 如何使用 TestRestTemplate?3.1 Controller3.2 测试代码 1 什么是 TestRestTemplate ? Spring Boot 的 TestRestTemplate 是用于在集成…

pycharm控制台(console)与终端(termimal)的区别

pycharm控制台(console)与终端(termimal)的区别 控制台主要用于Python代码的交互式运行,终端仅限于Python代码的运行,还可以执行其他系统级的命令控制台的配置与PyCharm紧密相关,通常会自动进入…

Linux基础知识面试题

1. 请描述Linux操作系统的安装过程,并说明其中的关键步骤。 Linux操作系统的安装过程通常涉及以下几个关键步骤: 准备安装介质:需要从官网或者其他可靠来源下载Linux发行版的ISO镜像文件,并制作一个启动U盘或者烧录到DVD中。现在…

【C++】认识C++(上)

目录 从C到C命名空间同名冲突命名空间的定义命名空间的使用 C的输入和输出缺省参数(默认参数) 从C到C C语言的出现是计算机科学和工程史上的一个重要里程碑,许多现代计算机语言都受C语言的影响。C语言是面向过程的,结构化和模块化…