Skip to main content
MySQL 是最流行的开源关系型数据库之一,具备高性能、低成本、生态完善等优势。本教程面向初学者与进阶工程师,覆盖从安装、基础 SQL 到事务、索引、备份恢复、性能优化与安全的完整路径。
示例命令与 SQL 语句保持英文原文(如 mysql, mysqldump),正文提供中文解释,方便复制粘贴。

读者画像

  • 需要为 Web/移动应用设计数据库的后端工程师
  • 负责维护现有 MySQL 集群、希望提升可靠性与性能的运维/DBA
  • 需要理解 SQL 行为、为数据分析或 BI 建模的数据工程师
即便之前接触过其他数据库(PostgreSQL、SQL Server 等),也可通过对比快速掌握 MySQL 的默认行为与差异点。

前置知识与工具

  • 熟悉基本命令行操作(Windows PowerShell 或 Unix shell)
  • 了解 Git、包管理器或容器工具(Homebrew、apt、Docker 等)
  • 对关系模型有初步概念:表、行、列、主键等
mysql --version

如何使用本教程

1

安装与环境

选择你的平台完成安装,并创建独立的业务账号,确保每个练习都在隔离环境里进行。
2

SQL 基础

通过 SELECT/INSERT/UPDATE/DELETE 操作熟悉增删改查,并对数据类型和约束形成直觉。
3

表设计与索引

从范式化建模切入,结合 EXPLAIN 理解索引命中与执行计划。
4

进阶主题

事务、锁、备份与恢复、性能优化、安全权限等内容可按需选读,也可顺序深入。
建议在本地或 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;
示例库遵循交易型系统常见模式:用户-订单-明细,后续章节会在此基础上拓展查询、事务与备份案例。

学习路径

  1. 安装与环境(/mysql/install)
  2. SQL 基础(/mysql/basics)
  3. 表设计与索引(/mysql/schema-index)
  4. 连接与聚合(/mysql/joins-aggregation)
  5. 事务与锁(/mysql/transactions-locks)
  6. 备份与恢复(/mysql/backup-restore)
  7. 性能优化(/mysql/performance)
  8. 安全与权限(/mysql/security)
  9. 故障排查(/mysql/troubleshooting)
  10. 速查表(/mysql/cheatsheet)

推荐资料

生产系统变更请先在测试环境演练,并准备回滚/备份方案,避免直接在线上实验教程中的命令。