首页 / MySQL 入门教程 / MySQL 简介与体系架构

MySQL 入门教程

MySQL 简介与体系架构

本教程共 46 篇 · 第 1 篇 · 更新于 2026-07-30 · 约 11 分钟阅读

MySQLMySQL 入门教程数据库关系型数据库存储引擎InnoDB体系架构

1. MySQL 简介与体系架构

本节目标:搞清楚 MySQL 到底是什么、为什么大家都用它,理解数据库、表、行、列这些基本概念,并弄明白客户端/服务端架构与存储引擎的作用,为后面学 SQL 打下底子。

1.1 先搞清楚:什么是数据库

我们每天都在和”数据”打交道。打开手机听歌,播放列表就是一种数据;刷朋友圈,照片和评论也是数据;逛淘宝下单,购物车和订单记录还是数据。

说白了,数据库(Database)就是按照一定结构来组织、存储和管理数据的仓库

那为什么不直接把数据存到文件里呢?因为文件读写慢、并发容易乱、查找还不方便。数据库就是专门解决这些问题的工具,它能把数据组织成”表”的结构,让你用很短的语句查到想要的内容。

关系型数据库

我们这本教程学的是关系型数据库(Relational Database)。所谓”关系型”,可以理解成”表格”——数据被存成一张张二维表,表和表之间还能互相”关联”。

比如你有一个用户表、一个订单表,订单里记录”这是哪个用户的订单”,通过用户编号就能把两张表连起来查。这就是”关系”。

关系型数据库管理系统的英文缩写是 RDBMS(Relational Database Management System)。它的特点是:

  • 数据以表格形式存在;
  • 每一行是一条记录;
  • 每一列是同一种类型的数据;
  • 多张表组成一个数据库;
  • 表与表之间可以建立关联。

1.2 那 MySQL 又是什么

MySQL 是一个开源的关系型数据库管理系统,由瑞典 MySQL AB 公司开发,现在归 Oracle 公司所有。它免费、轻量、速度快,是当今最流行的数据库之一。

它的名字来源挺有意思:创始人 Monty Widenius 用自己女儿的名字 “My” 加上 “SQL” 组成了 MySQL。官方读法是 “My S-Q-L”,不过你爱怎么念都行。

MySQL 能成为 Web 开发的”标配”,主要靠这几个特点:

  • 开源免费:社区版不花钱,也能付费买商业版要技术支持;
  • 跨平台:Windows、Linux、macOS 都能跑;
  • 性能好:处理千万级数据没问题,响应也快;
  • 支持标准 SQL:学一套语法,换数据库也能用上大半;
  • 生态成熟:和 PHP、Java、Python 都能很好配合,是 LAMP(Linux + Apache + MySQL + PHP)架构的核心组件。
Note

MySQL 和 SQL 不是一回事。SQL(Structured Query Language,结构化查询语言) 是一门”语言”,用来操作数据库;而 MySQL 是一个”软件”,是能听懂 SQL 的数据库服务器。两者关系就像”英语”和”英国人”。

1.3 几个必须先记住的术语

后面会反复用到这些词,先认个脸:

  • 数据库(Database):关联表的集合,相当于一个大文件夹;
  • 表(Table):数据的矩阵,长得像 Excel 表格;
  • 列(Column):也叫字段,一列存同一类数据,比如”姓名”;
  • 行(Row):也叫记录或元组,一行描述一条完整信息,比如”一个用户”;
  • 主键(Primary Key):能唯一标识一行数据的列,比如用户 ID;
  • 外键(Foreign Key):用来关联两张表的列;
  • 索引(Index):像书的目录,帮数据库快速定位数据,提升查询速度。

这些概念不用一次全背下来,后面用到的时候会反复讲。先有个印象就行。

1.4 客户端/服务端架构

MySQL 采用的是客户端/服务端(Client/Server)架构,这点一定要理解,不然后面连接、操作都会迷糊。

说白了,MySQL 分成两个部分:

  • 服务端(MySQL Server):真正存数据、执行 SQL 的”大脑”,通常装在服务器上,一直默默运行着;
  • 客户端(MySQL Client):你用来跟服务端”对话”的工具,把你的 SQL 发给服务端,再把结果展示给你。

两者之间通过网络通信。你在一台电脑上敲 SQL,数据可能存在另一台电脑的服务端里。

[ 你 ] --敲SQL--> [ 客户端 ] --网络--> [ 服务端 ] --读写--> [ 数据文件 ]
                                              |
                                      [ 返回结果给客户端 ]

平时最常用的客户端就是 MySQL 自带的命令行工具 mysql,敲 mysql -u root -p 进去那个黑乎乎的窗口就是它。当然也有很多图形化客户端,比如官方的 MySQL Workbench、第三方的 Navicat、DBeaver 等,本质都是干这件事。

Tip

一台机器上可以同时装服务端和客户端——你本机开发就是这种情形。但概念上要清楚:客户端发命令,服务端干活的。

1.5 SQL 是怎么被处理的

了解下服务端收到一条 SQL 后大致的处理流程,对后面排错有帮助。简化来说分这几步:

  1. 连接层:客户端连上来,先校验账号密码,确认身份;
  2. SQL 接口:接收 SQL 语句,做基本的语法解析;
  3. 解析器(Parser):把 SQL 拆解成解析树,检查语法对不对;
  4. 优化器(Optimizer):决定怎么执行最划算,比如走哪个索引;
  5. 执行器:真正调用存储引擎去读写数据;
  6. 存储引擎:负责数据的实际存储和提取,这是 MySQL 最有特色的一层。

记住一个关键点:优化器决定”怎么做”,存储引擎负责”动手做”。所以同一条 SQL,不同引擎、不同索引,执行效率可能差很多。

1.6 存储引擎:MySQL 的特色

这是 MySQL 和很多数据库不一样的地方。存储引擎(Storage Engine) 决定了数据怎么存、怎么建索引、支不支持事务。

MySQL 支持多种存储引擎,同一台服务器上不同表还能用不同引擎。最常用的有两个:

InnoDB

从 MySQL 5.5 起成为默认存储引擎,现在我们写的表几乎都用它。它的特点是:

  • 支持事务(Transaction),保证一组操作要么全成功、要么全失败;
  • 支持行级锁,并发性能好;
  • 支持外键,保证数据完整性;
  • 崩溃后能自动恢复,数据安全有保障。
Note

事务是 InnoDB 的灵魂。比如转账:A 扣钱、B 加钱,必须同时成功或同时失败,不然钱就凭空消失或多出来了。MyISAM 做不到这点。

MyISAM

MySQL 早期的默认引擎,现在基本不用了。它的特点是:

  • 不支持事务,也不支持行锁;
  • 表级锁,并发一高就互相等;
  • 优势是查询计数快、全文索引早(现在 InnoDB 也支持了)。

老项目、只读的统计表偶尔还能见到它。新项目统一用 InnoDB 就行。

两者的简单对比

对比项InnoDBMyISAM
事务支持支持不支持
锁粒度行锁表锁
外键支持不支持
崩溃恢复支持不支持
全文索引8.0+ 支持支持
适用场景绝大多数业务老系统/只读统计

查看当前服务器支持哪些引擎,可以用这条命令:

SHOW ENGINES;

结果里 Support 列标 DEFAULT 的就是默认引擎。在 MySQL 26.7 里,默认就是 InnoDB

查看某张表用的什么引擎:

SHOW TABLE STATUS LIKE 'users'\G

输出里的 Engine 字段就是答案。

1.7 MySQL 的版本怎么选

MySQL 现在采用”创新版 + LTS 长期支持版”双轨发布:

  • 创新版(Innovation):包含最新特性,更新快,适合想尝鲜的;
  • LTS 版:稳定、维护周期长,适合生产环境。

截至本教程写作,官方下载页提供的版本有:

  • 26.7.0:当前最新创新版,本教程的基线版本;
  • 9.7.2 LTS:长期支持版;
  • 8.4.11 LTS:长期支持版;
  • 8.0.46:经典老版本,已接近生命周期终点。
Warning

本教程以 MySQL 26.7 为基线讲解语法和特性。但要注意:从 8.0 起,MySQL 有几项重大变化——默认认证插件改成 caching_sha2_password、默认字符集改成 utf8mb4CHECK 约束从 8.0.16 起真正生效、8.0+ 支持窗口函数和 CTE。而 8.4 起老的 mysql_native_password 认证插件被弃用,9.0 起彻底移除。这些差异后面遇到都会标注。

1.8 小结

这一节我们建立了几个核心认知:

  • 数据库是存数据的仓库,关系型数据库用”表”来组织数据;
  • MySQL 是一个开源的关系型数据库管理系统,免费、跨平台、性能好;
  • MySQL 是客户端/服务端架构,服务端干活,客户端发命令;
  • 服务端处理 SQL 经过连接、解析、优化、执行几步;
  • 存储引擎决定数据怎么存,默认用 InnoDB,支持事务和行锁。

下一节我们就动手把 MySQL 装起来,开始真正和它打交道。

上一篇
已经是第一篇啦
下一篇
MySQL 安装与环境配置