🟢 初级阶段:打基础,能写出简单 SQL
🎯 目标:掌握基本语法,能对数据进行增删改查。
| 分类 | 📌 知识点 | ✅ 示例 |
|---|---|---|
| 基本概念 | 什么是数据库、表、行、列 | 表示用户信息的数据结构 |
| 安装连接 | 安装 MySQL,连接数据库工具(Navicat、DBeaver) | 登录数据库 |
| 基本数据类型 | INT、VARCHAR、DATE、TEXT、BOOLEAN |
用户年龄、注册时间 |
| CRUD 操作 | SELECT、INSERT、UPDATE、DELETE |
查询用户、添加记录 |
| 条件语句 | WHERE、比较符、逻辑运算符 |
查找年龄 > 18 的用户 |
| 排序 & 限制 | ORDER BY、LIMIT |
分页查询 |
| 模糊查询 | LIKE、% |
搜索名字含“张”的用户 |
🟡 中级阶段:数据建模 + 复杂查询
🎯 目标:能设计数据库结构,写出多表关联查询。
| 分类 | 📌 知识点 | ✅ 示例 |
|---|---|---|
| 表结构设计 | 主键、自增、默认值、非空、唯一 | CREATE TABLE users (...) |
| 多表关系 | 一对多、多对多、外键 | 用户与订单的关系 |
| 联表查询 | JOIN(INNER、LEFT、RIGHT) |
查询每个订单对应的用户 |
| 子查询 | SELECT 中嵌套查询 |
查询有订单的用户 |
| 分组聚合 | GROUP BY、COUNT、SUM、HAVING |
统计每个城市用户数量 |
| 索引 | 创建/删除索引、性能影响 | 为邮箱字段加索引 |
| 视图 | CREATE VIEW 创建虚拟表 |
统一复杂查询逻辑 |
| 字符集 & 排序规则 | utf8mb4 vs latin1、collation |
防止乱码 |
🔵 高级阶段:性能优化 + 存储过程 + 权限控制
🎯 目标:提升查询效率、管理安全和业务逻辑封装。
| 分类 | 📌 知识点 | ✅ 示例 |
|---|---|---|
| 查询优化 | 执行计划 EXPLAIN、慢查询日志 |
排查 SQL 性能瓶颈 |
| 索引优化 | 联合索引、覆盖索引、最左匹配 | 提高多字段查询效率 |
| 事务处理 | BEGIN、COMMIT、ROLLBACK |
转账操作确保一致性 |
| 锁机制 | 行锁、表锁、死锁 | 高并发下的数据一致性问题 |
| 存储过程 | 自定义逻辑、流程控制(IF、WHILE) | 结算批处理任务 |
| 触发器 | 在 INSERT/UPDATE/DELETE 触发自动操作 |
自动更新时间戳 |
| 用户权限 | GRANT、REVOKE、账号安全 |
创建只读账号 |
| 备份恢复 | mysqldump、日志恢复 |
数据定期备份策略 |
🧠 推荐实战项目
| 项目 | 涉及知识点 |
|---|---|
| 👤 用户管理系统 | 表结构设计、索引、基本 CRUD |
| 📦 商品订单系统 | 一对多、多表联查、事务处理 |
| 📊 后台报表系统 | 聚合统计、分组排序、分页查询 |
| 🔐 权限系统 | 用户角色表设计、JOIN 多表 |
🗂 数据库设计原则
-
✅ 三范式(NF)了解:字段原子化、无冗余、主键依赖
-
✅ 命名规范:表名复数,字段小写下划线
-
✅ 常见设计坑:冗余字段 vs 性能优化字段(需权衡)
🧩 学完后还能干啥?
| 配合 | 能实现 |
|---|---|
| Node.js/Express | 写真实后端接口,MySQL 作为数据来源 |
| Sequelize 等 ORM | 数据库模型映射为对象,快速开发 |
| Docker + MySQL | 本地容器化部署数据库环境 |
| Redis + MySQL | 热数据缓存,提升查询性能 |