MySQL数据库入门|从零搞懂数据库基础、架构与存储引擎
前言
在后端开发的世界里,数据库是绕不开的核心。我们写的业务系统产生的用户数据、订单数据、文章数据,总不能只存在程序内存里,程序一关数据就全部消失。数据库就是用来解决数据持久存储、高效查询管理的核心技术。今天就带大家梳理MySQL基础知识点,从数据库概念、主流产品、MySQL配置、SQL分类,再到底层架构和存储引擎,一次性搞懂基础核心。
一、什么是数据库?为什么要用数据库
数据库诞生于20世纪60年代末,专门解决数据存储、查询、修改、统计这类非数值计算问题。
使用数据库能带来十大核心能力:
- 数据持久化:数据保存到磁盘,程序关闭、服务器重启数据不会丢失。
- 数据结构化:以规范格式存储,方便管理查询。
- 数据完整性:保障数据准确、不出现错乱。
- 并发控制:多人同时读写数据,保证数据不乱。
- 安全性:权限控制、数据加密,防止非法访问。
- 可扩展性:数据量上涨可以横向、纵向扩容。
- 备份恢复:数据损坏丢失可以还原。
- 查询优化:内置优化器,快速执行复杂查询。
- 事务管理:一组操作要么全部成功,要么全部失败。
- 多用户支持:支持大量用户同时操作数据。
主流数据库分类
数据库分为关系型数据库和**非关系型数据库(NoSQL)**两大类。
关系型数据库(二维表格模型)
- Oracle:收费,性能强悍,多用于大型企业项目。
- MySQL:开源免费,中小企业最常用,电商、论坛项目首选,归属于Oracle。
- PostgreSQL:开源免费,可自由修改分发。
- SQL Server:微软出品,和Windows生态适配好。
- SQLite:超轻量,占用资源极小,多用于手机APP、嵌入式设备。
💡关系型数据库核心:以行、列组成二维表格存储数据,多张表可以通过字段建立关联关系。比如学生表通过班级编号关联班级表。
非关系型数据库
- Redis:键值对内存数据库,常用来做缓存,支持持久化。
- MongoDB:文档型数据库,高性能,易扩展。
二、MySQL基础概念:服务器、数据库、表是什么关系
很多新手容易混淆这三个概念,这里一句话理清:
- MySQL数据库服务器:就是mysqld服务程序,一台机器上跑起来,可以管理N个数据库。
- 数据库(Database):一个应用对应一个数据库,比如电商项目就建一个电商数据库。
- 表(Table):数据库里面存放实体数据,一个库可以有多张表,比如用户表、订单表。
简单层级:计算机 → MySQL服务 → 多个数据库 → 每个数据库下多张数据表。
MySQL配置文件 my.ini
Windows下MySQL8.0配置文件默认路径:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
配置文件分为多个节点:
[client]:所有客户端通用配置,设置端口、字符集[mysql]:仅mysql命令行客户端配置[mysqld]:服务端核心配置 ,端口3306、数据存放目录datadir、字符集character‑set‑server、默认存储引擎default‑storage‑engine=INNODB、各类日志配置。
✨修改配置文件注意:修改完配置,必须重启MySQL服务;如果修改数据目录,要把原data文件夹完整复制到新路径。
三、MySQL客户端工具,三种常用选择
MySQL是C/S架构:客户端发送请求 → MySQL服务端处理 → 返回结果。客户端有命令行也有可视化工具。
- mysql命令行(自带)
终端直接连接:
bash
mysql -uroot -p
输入密码就可以写SQL,适合熟悉命令行的开发者。
-
MySQL Workbench
Oracle官方免费可视化工具,图形化操作,分为数据库列表区、SQL编辑区、结果显示区。
-
Navicat Lite
学习强烈推荐,免费轻量。新建连接填写主机
localhost、端口3306、账号root、密码,测试连接成功后,就可以编写SQL操作数据库。
📌小知识点:MySQL通信属于C/S架构,客户端需要安装软件;而我们平时浏览网页属于B/S浏览器服务器架构,浏览器就是客户端,不需要额外安装程序。
四、SQL语言三大分类
SQL全称结构化查询语言,专门操作关系数据库,分为DDL、DML、DCL。
| 分类 | 全称 | 作用 | 核心命令 |
|---|---|---|---|
| DDL | 数据定义语言 | 维护数据库、表结构 | create创建、drop删除、alter修改 |
| DML | 数据操纵语言 | 操作表里真实数据 | insert插入、delete删除、update修改、select查询 |
| DCL | 数据控制语言 | 权限、事务管理 | grant授权、revoke回收权限、commit提交事务 |
日常开发写的最多的就是DML,也就是增删改查CRUD。
五、MySQL整体架构
MySQL是分层架构,从外到内分为四层:
- 连接层:连接池,处理客户端连接、身份认证、线程复用,限制最大连接数。
- 服务层:SQL接口、解析器(解析SQL语法)、优化器(生成最优执行计划)、缓存、服务管理组件。SQL在这里完成语法校验、逻辑优化。
- 存储引擎层 :可插拔架构,真正负责数据读写,不同引擎有不同特性。
- 文件系统层:磁盘上真实的文件,数据文件、索引文件、日志文件(错误日志、慢查询日志、binlog等)。
⚠️存储引擎是插件式,不是数据库,是表的属性,一张表选定一个存储引擎。
六、存储引擎怎么选?MyISAM vs InnoDB
执行show engines;就可以查看当前MySQL支持的全部存储引擎。MySQL8.0默认存储引擎是InnoDB。
| 特性 | MyISAM | InnoDB(默认) | MEMORY |
|---|---|---|---|
| 事务支持 | ❌不支持 | ✅支持事务 | ❌ |
| 锁粒度 | 表锁,整张表锁定 | 行锁,只锁被修改行 | 表锁 |
| 外键 | 不支持 | 支持 | 不支持 |
| MVCC多版本并发 | 无 | 支持 | 无 |
| 存储位置 | 磁盘 | 磁盘 | 内存,重启数据丢失 |
使用场景建议
-
InnoDB(绝大多数业务首选)
支持事务、行级锁、外键、MVCC,数据安全,适合业务系统,电商、后台管理系统全部用它。
-
MyISAM
不支持事务,查询速度快,但是崩溃容易丢数据,现在新项目很少使用。
-
MEMORY
全部数据放在内存,速度极快,服务器重启数据全部清空,适合临时数据。
七、总结
- 数据库解决数据持久存储、并发访问、安全备份的问题,分为关系型和非关系型。
- MySQL是C/S架构,分清服务、数据库、表三级层级,my.ini是核心配置文件。
- 客户端可以使用命令行、Workbench、Navicat。
- SQL分为DDL结构定义、DML数据操作、DCL权限事务控制。
- MySQL四层架构:连接层‑服务层‑存储引擎层‑文件层;存储引擎可插拔,InnoDB是默认,业务开发优先选择InnoDB。