MySQL 是最流行的开源关系型数据库之一,具备高性能、低成本、生态完善等优势。本教程面向初学者与进阶工程师,覆盖从安装、基础 SQL 到事务、索引、备份恢复、性能优化与安全的完整路径。
示例命令与 SQL 语句保持英文原文(如 mysql, mysqldump),正文提供中文解释,方便复制粘贴。
读者画像
- 需要为 Web/移动应用设计数据库的后端工程师
- 负责维护现有 MySQL 集群、希望提升可靠性与性能的运维/DBA
- 需要理解 SQL 行为、为数据分析或 BI 建模的数据工程师
即便之前接触过其他数据库(PostgreSQL、SQL Server 等),也可通过对比快速掌握 MySQL 的默认行为与差异点。
前置知识与工具
- 熟悉基本命令行操作(Windows PowerShell 或 Unix shell)
- 了解 Git、包管理器或容器工具(Homebrew、apt、Docker 等)
- 对关系模型有初步概念:表、行、列、主键等
如何使用本教程
安装与环境
选择你的平台完成安装,并创建独立的业务账号,确保每个练习都在隔离环境里进行。
SQL 基础
通过 SELECT/INSERT/UPDATE/DELETE 操作熟悉增删改查,并对数据类型和约束形成直觉。
表设计与索引
从范式化建模切入,结合 EXPLAIN 理解索引命中与执行计划。
进阶主题
事务、锁、备份与恢复、性能优化、安全权限等内容可按需选读,也可顺序深入。
建议在本地或 Docker 中准备一个 shop 示例库,所有章节都围绕该数据集展开,可避免环境差异带来的偏差。
示例数据库
CREATE DATABASE IF NOT EXISTS shop;
USE shop;
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
CREATE TABLE products (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(200) NOT NULL,
price DECIMAL(10,2) NOT NULL,
stock INT NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY idx_price (price)
) ENGINE=InnoDB;
CREATE TABLE orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
total DECIMAL(10,2) NOT NULL,
status ENUM('CREATED','PAID','CANCELLED') NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB;
CREATE TABLE order_items (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
quantity INT NOT NULL,
price DECIMAL(10,2) NOT NULL,
FOREIGN KEY (order_id) REFERENCES orders(id),
FOREIGN KEY (product_id) REFERENCES products(id),
KEY idx_order (order_id),
KEY idx_product (product_id)
) ENGINE=InnoDB;
示例库遵循交易型系统常见模式:用户-订单-明细,后续章节会在此基础上拓展查询、事务与备份案例。
学习路径
- 安装与环境(/mysql/install)
- SQL 基础(/mysql/basics)
- 表设计与索引(/mysql/schema-index)
- 连接与聚合(/mysql/joins-aggregation)
- 事务与锁(/mysql/transactions-locks)
- 备份与恢复(/mysql/backup-restore)
- 性能优化(/mysql/performance)
- 安全与权限(/mysql/security)
- 故障排查(/mysql/troubleshooting)
- 速查表(/mysql/cheatsheet)
推荐资料
生产系统变更请先在测试环境演练,并准备回滚/备份方案,避免直接在线上实验教程中的命令。