文章目录
🌈 一、什么是数据库
1. MySQL 的本质
- 在安装 MySQL 时会分别会安装 mysql 和 mysqld 两个软件。
- mysql:数据库服务的客户端。
- mysqld:数据库服务的服务端。
- MySQL 本质上是一种基于 CS 模式的网络服务,因此 mysqld 就是这个网络服务的后端。
- MySQL 是一套提供数据存取服务的网络程序,数据库服务特指的就是 mysqld。
2. 为什么用数据库存储数据而不是文件
- 站在用户角度上看,之所以不用文件存储数据,是因为一般的文件虽然也提供了数据的存储功能,但并没有提供非常好的数据内容管理能力
3. 什么是数据库
- 数据库一般指的是,在磁盘或内存中存储的特定结构组织的数据。将来在磁盘上存储的一套数据库方案。
- 数据库本质:对数据内容存储的一套解决方案,交给数据库字段或者要求,数据库直接返回结果即可。
- 具象化:数据库本质也是文件,只不过这些文件不由程序员直接操作,而是由对应的数据库服务 (mysqld) 帮我们进行操作。
🌈 二、MySQL 的基本使用
⭐ 1. 连接服务器
- 在命令行输入以下指令后,再输入用户名所对应的密码即可。
- -h:指定登录部署了 mysql 服务的主机,如果不写 -h 127.0.0.1 则默认是连接本地;
- -P:指定要访问的端口号,如果不写 -P 3306 则默认是连接 3306 的端口号。
- -u:指定登录用户,默认为 root。
- -p:表示需要输入密码。
mysql -h 127.0.0.1 -P 3306 -u 用户名 -p
⭐ 2. MySQL 使用案例
- 下面的工作实际上都是用户通过 mysql 客户端让 mysqld 服务端做的。
- 创建数据库:本质上就是建立 Linux 下的一个目录。
create database 数据库名;
- 使用数据库:数据库有很多,得指定要进行操作的数据库。
use 数据库名;
- 创建数据库表:在数据库内建表,本质就是在 Linux 下创建一个对应的文件。
create table 表名(字段1 字段1类型, 字段2 字段2类型, 字段n 字段n 类型);
- 往数据库表中插入数据
insert into 表名(字段名1, 字段名2, ..., 字段n) values(值1, 值2..., 值n);
- 查询表中所有的数据
select * from 表名;
⭐ 3. 服务器、数据库、表之间的关系
- 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用建一个数据库。
- 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
- 数据库服务器、数据库和表之间的关系如下:
🌈 三、MySQL 架构
- MySQL 是一个可移植的数据库,几乎在当前所有的操作系统上运行。
- 各系统在底层实现方面都各有不同,但 MySQL 基本能保证在各个平台上的物理体系结构的一致性。
MySQL 架构整体分为三层
- 第一层 (数据库连接池这层):在这一层 MySQL 的主要工作是分别,用户管理、鉴别用户的合法身份、保证安全。
- 第二层 (SQL 接口组件所在的这层):主要对客户端下达过来的 SQL 语句进行词法分析、语法分析、对 SQL 语句做一定程度优化。
- 第三层 (InnoDB 这层):有不同的存储引擎,接收从上层转化调优后的 SQL 语句,再对这些语句进行解释,访问指定的数据库或表结构。
🌈 四、SQL 语句分类
- DDL (data definition language) 数据定义语言:用来维护存储数据的结构的语言。
- 代表指令:create、drop、alter
- DML (data manipulation language) 数据操作语言:用来对数据进行操作的语言。
- 代表指令:insert、delete、update
- DQL (data query language) 数据查询语言:用来查询数据的语言。
- 代表指令:select
- DCL (data control language) 数据控制语言:主要负责权限和事务的管理。
- 代表指令:grant、revoke、commit
🌈 五、存储引擎
- 存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
⭐ 1. 查看存储引擎
show engines;
⭐ 2. 常见存储引擎对比
- 在 MySQL 中最常见的存储引擎是 MyISAM 和 InnoDB,其中 InnoDB 占到了 80% 以上。
特点 \ 引擎 | MyISAM | InnoDB | MEMORY | MERGE |
---|---|---|---|---|
存储限制 | 有 | 64TB | 有 | 无 |
事务安全 | 支持 | |||
锁机制 | 表锁 | 行锁 | 表锁 | 表锁 |
B 树索引 | 支持 | 支持 | 支持 | 支持 |
哈希索引 | 支持 | |||
全文索引 | 支持 | |||
集群索引 | 支持 | |||
数据缓存 | 支持 | 支持 | ||
索引缓存 | 支持 | 支持 | 支持 | 支持 |
数据可压缩 | 支持 | |||
空间使用 | 低 | 高 | N / A | 低 |
内存使用 | 低 | 高 | 中 | 低 |
批量插入速度 | 搞 | 低 | 高 | 高 |
支持外键 | 支持 |