mysql 学习计划

一、快速入门:MySQL 基础(1-2 周)

目标

掌握 MySQL 核心概念、基础 SQL 语法,能独立完成简单的 CRUD 和数据查询。

学习路径

  1. 安装与配置
    • 下载 MySQL Community Server 或使用 Docker 快速部署。
    • 学习使用 mysql 命令行工具或 MySQL Workbench(图形化界面)。

  2. 核心概念
    关系型数据库基础:表(Table)、行(Row)、列(Column)、主键(Primary Key)、外键(Foreign Key)。
    SQL 分类:DDL(建表)、DML(增删改查)、DQL(查询)、TCL(事务)。

  3. 基础 SQL 语法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- 创建数据库和表
    CREATE DATABASE myapp;
    USE myapp;
    CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
    );

    -- CRUD 操作
    INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
    SELECT * FROM users WHERE id = 1;
    UPDATE users SET name = 'Bob' WHERE id = 1;
    DELETE FROM users WHERE id = 1;
  4. 必学重点
    JOIN 操作INNER JOIN, LEFT JOIN
    聚合函数COUNT(), SUM(), GROUP BY, HAVING
    事务控制BEGIN, COMMIT, ROLLBACK

推荐资源

交互式练习SQLBolt(免费在线 SQL 练习)
书籍:《MySQL 必知必会》(适合快速入门)
文档MySQL 8.0 官方文档


二、进阶:数据库设计与优化(2-3 周)

目标

设计规范的数据库结构,理解索引和性能优化,避免“写代码一时爽,上线后火葬场”。

学习路径

  1. 数据库设计原则
    三范式(3NF):消除冗余,保证数据一致性。
    ER 图工具:使用 Draw.iodbdiagram.io 设计表关系。

  2. 索引优化
    • 理解 B+Tree 索引原理。
    • 何时创建索引?高频查询字段、WHERE/JOIN/ORDER BY 涉及的字段。
    • 使用 EXPLAIN 分析查询性能。

  3. 常见问题与优化
    慢查询:开启慢查询日志,定位性能瓶颈。
    分页优化:避免 LIMIT 100000, 10,改用游标分页或覆盖索引。
    避免全表扫描:合理使用索引和 WHERE 条件。

  4. 安全与备份
    SQL 注入防护:永远不要拼接 SQL 字符串!
    • 备份工具:mysqldumpxtrabackup

推荐资源

书籍:《高性能 MySQL》(第 4 章索引、第 5 章优化)
工具Percona Toolkit(诊断数据库性能)


三、工程化整合:Node.js + MySQL(1 周)

目标

将 MySQL 集成到 Node.js 后端,掌握 ORM 和 SQL 安全实践。

学习路径

  1. 原生驱动连接
    • 使用 mysql2mysql 库(推荐 mysql2/promise 支持 Promise):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const mysql = require("mysql2/promise")
    const pool = mysql.createPool({
    host: "localhost",
    user: "root",
    database: "myapp",
    waitForConnections: true,
    connectionLimit: 10,
    })

    // 查询示例
    const [rows] = await pool.query("SELECT * FROM users WHERE id = ?", [1])
  2. ORM 框架(可选)
    Sequelize:主流 ORM,适合复杂业务逻辑。
    Knex.js:轻量级 SQL 查询构建器,更接近原生 SQL。

  3. 关键实践
    连接池管理:避免频繁创建连接。
    防 SQL 注入:永远使用参数化查询(如 ? 占位符)。
    事务处理:保证数据一致性。

  4. 项目实战
    • 用 React + Node.js + MySQL 实现一个 Todo List博客系统
    ◦ 前端(React):展示数据、提交表单。
    ◦ 后端(Express/Koa):提供 RESTful API。
    ◦ 数据库(MySQL):存储用户、文章等数据。


四、学习建议与避坑指南

  1. 不要死记语法
    • 多用 SHOW CREATE TABLEDESCRIBE table 查看表结构。
    • 善用 ChatGPT 辅助写复杂 SQL(但要理解原理)。

  2. 避免新手陷阱
    • 不要把所有字段设为 NULL(用 NOT NULL 约束)。
    • 不要滥用 SELECT *(明确指定字段)。
    • 不要忽视索引,但也不要过度索引。

  3. 学习节奏
    • 每天 1-2 小时,边学边写代码。
    • 优先掌握常用功能(80%场景用 20%的语法)。


五、延伸学习(可选)

云数据库:尝试阿里云 RDS 或 AWS RDS。
NoSQL 对比:了解 MongoDB 的适用场景。
TypeORM:如果你在用 TypeScript,可学习 TypeORM。

通过这个方案,你可以在 1-2 个月内掌握 MySQL 的核心技能,并直接应用于现有技术栈中。