mysql 学习计划
一、快速入门:MySQL 基础(1-2 周)
目标
掌握 MySQL 核心概念、基础 SQL 语法,能独立完成简单的 CRUD 和数据查询。
学习路径
安装与配置
• 下载 MySQL Community Server 或使用 Docker 快速部署。
• 学习使用mysql
命令行工具或 MySQL Workbench(图形化界面)。核心概念
• 关系型数据库基础:表(Table)、行(Row)、列(Column)、主键(Primary Key)、外键(Foreign Key)。
• SQL 分类:DDL(建表)、DML(增删改查)、DQL(查询)、TCL(事务)。基础 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;必学重点
• JOIN 操作:INNER JOIN
,LEFT JOIN
。
• 聚合函数:COUNT()
,SUM()
,GROUP BY
,HAVING
。
• 事务控制:BEGIN
,COMMIT
,ROLLBACK
。
推荐资源
• 交互式练习:SQLBolt(免费在线 SQL 练习)
• 书籍:《MySQL 必知必会》(适合快速入门)
• 文档:MySQL 8.0 官方文档
二、进阶:数据库设计与优化(2-3 周)
目标
设计规范的数据库结构,理解索引和性能优化,避免“写代码一时爽,上线后火葬场”。
学习路径
数据库设计原则
• 三范式(3NF):消除冗余,保证数据一致性。
• ER 图工具:使用 Draw.io 或 dbdiagram.io 设计表关系。索引优化
• 理解 B+Tree 索引原理。
• 何时创建索引?高频查询字段、WHERE/JOIN/ORDER BY 涉及的字段。
• 使用EXPLAIN
分析查询性能。常见问题与优化
• 慢查询:开启慢查询日志,定位性能瓶颈。
• 分页优化:避免LIMIT 100000, 10
,改用游标分页或覆盖索引。
• 避免全表扫描:合理使用索引和 WHERE 条件。安全与备份
• SQL 注入防护:永远不要拼接 SQL 字符串!
• 备份工具:mysqldump
或xtrabackup
。
推荐资源
• 书籍:《高性能 MySQL》(第 4 章索引、第 5 章优化)
• 工具:Percona Toolkit(诊断数据库性能)
三、工程化整合:Node.js + MySQL(1 周)
目标
将 MySQL 集成到 Node.js 后端,掌握 ORM 和 SQL 安全实践。
学习路径
原生驱动连接
• 使用mysql2
或mysql
库(推荐mysql2/promise
支持 Promise):1
2
3
4
5
6
7
8
9
10
11const 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])ORM 框架(可选)
• Sequelize:主流 ORM,适合复杂业务逻辑。
• Knex.js:轻量级 SQL 查询构建器,更接近原生 SQL。关键实践
• 连接池管理:避免频繁创建连接。
• 防 SQL 注入:永远使用参数化查询(如?
占位符)。
• 事务处理:保证数据一致性。项目实战
• 用 React + Node.js + MySQL 实现一个 Todo List 或 博客系统:
◦ 前端(React):展示数据、提交表单。
◦ 后端(Express/Koa):提供 RESTful API。
◦ 数据库(MySQL):存储用户、文章等数据。
四、学习建议与避坑指南
不要死记语法
• 多用SHOW CREATE TABLE
、DESCRIBE table
查看表结构。
• 善用 ChatGPT 辅助写复杂 SQL(但要理解原理)。避免新手陷阱
• 不要把所有字段设为NULL
(用NOT NULL
约束)。
• 不要滥用SELECT *
(明确指定字段)。
• 不要忽视索引,但也不要过度索引。学习节奏
• 每天 1-2 小时,边学边写代码。
• 优先掌握常用功能(80%场景用 20%的语法)。
五、延伸学习(可选)
• 云数据库:尝试阿里云 RDS 或 AWS RDS。
• NoSQL 对比:了解 MongoDB 的适用场景。
• TypeORM:如果你在用 TypeScript,可学习 TypeORM。
通过这个方案,你可以在 1-2 个月内掌握 MySQL 的核心技能,并直接应用于现有技术栈中。