一、图书定位与特色
- 零门槛入门:面向完全没有编程背景的读者;只需具备英语阅读与基础办公表格(Excel/Google Sheets)经验即可上手。
- “立即见效” 的 Month of Lunches 系列特色:每天 40 分钟阅读 + 20 分钟动手实验,24 天即可完整读完。
- MySQL 为主,跨库通用:示例基于 MySQL,但明确指出在 SQL Server、PostgreSQL、Oracle 等主流 RDBMS 中的差异与兼容写法。
- 实战导向:每章均设“Lab”小实验,用虚构的 sqlnovel 数据库(一个出版 SQL 主题小说的订单系统)驱动真实场景练习。
二、内容结构速览
| 周次 | 主题 | 关键章节 |
| --- | --- | --- |
| 第 1 周 | 基础查询 | 1–7 章:SELECT、WHERE、ORDER BY、LIMIT、注释、通配符与 NULL 处理 |
| 第 2 周 | 多表与集合 | 8–11 章:JOIN、外连接、UNION/INTERSECT/EXCEPT、子查询 |
| 第 3 周 | 聚合与变量 | 12–13 章:GROUP BY、HAVING、聚合函数、用户变量 |
| 第 4 周 | 函数与数据操作 | 14–18 章:字符串/日期函数、INSERT、UPDATE、DELETE、建表与约束 |
| 加餐 | 高级主题 | 19–24 章:索引、视图、存储过程、游标、脚本复用、决策逻辑 |
三、核心知识点提炼
1. 查询基础
- SELECT-FROM 语法:列别名、星号陷阱、排序(ORDER BY)、分页(LIMIT/OFFSET)。
- 过滤三件套:
- 单条件(=、<>、BETWEEN、LIKE、IN、IS NULL)
- 多条件(AND/OR、括号优先级)
- 范围与排除(NOT BETWEEN、NOT IN、NOT EXISTS)。
- 通配符与 NULL:
%
、_
用法及对大小写/空值的注意点。
2. 多表与关系
- 范式思想:拆表消除冗余 → 主键/外键 → 一对多、多对多。
- JOIN 大全:
INNER JOIN
(交集)
LEFT/RIGHT/FULL OUTER JOIN
(补集)
CROSS JOIN
(笛卡尔积)
USING
/ NATURAL JOIN
的坑与可读性。
- 子查询与集合运算:
- WHERE/SELECT/FROM 三种位置的子查询;
- UNION(去重) vs. UNION ALL(保留重复);EXISTS/NOT EXISTS 性能优化。
3. 聚合与分组
- 五大聚合:SUM、COUNT、AVG、MIN、MAX;与 NULL 的交互。
- GROUP BY + HAVING:分组后二次过滤;逻辑执行顺序(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY)。
- DISTINCT 与 GROUP BY 互换场景;避免在大表上滥用 DISTINCT。
4. 变量与函数
- 用户变量:
@var
声明(SET / SELECT :=)与作用域(连接级)。
- 常用函数:
- 字符串:UPPER/LOWER、TRIM、REPLACE、CONCAT/CONCAT_WS、LEFT/RIGHT/SUBSTRING。
- 日期:YEAR、MONTH、DAYNAME、CURRENT_TIMESTAMP、NOW。
- 数值:ROUND、CEIL、FLOOR、ABS、MOD。
- 类型转换:CAST vs. CONVERT 的跨库差异。
5. 数据操作语言(DML)
- INSERT:
- VALUES 单行/多行;
- 部分列插入(允许 NULL 或默认值);
- 用 SELECT 子查询批量插入;
- 变量化插入脚本。
- UPDATE & DELETE:
- 实时生效,无回滚;
- 必须加 WHERE 防全表更新;
- 多表 UPDATE 写法(MySQL 与 SQL Server 差异)。
- 事务提示:Workbench Safe Updates 设置;作者提醒“操作前备份”。
6. 数据定义与可复用对象
- CREATE/ALTER TABLE:主键、外键、NOT NULL、DEFAULT、CHECK、UNIQUE、AUTO_INCREMENT。
- 索引:聚簇 vs. 非聚簇;何时创建与性能权衡。
- 视图 & 存储过程:封装复杂查询;接受输入参数。
- 游标:逐行处理场景及避免游标的集合思维。
四、学习路径建议
- 按顺序阅读:每章建立在上一章之上,务必完成 Lab 再前进。
- 动手为王:作者 GitHub 提供 sqlnovel 数据库脚本与答案,鼓励边敲边学。
- 举一反三:
- 把 sqlnovel 换成自己业务库,复现每章查询。
- 对比不同 RDBMS 的函数差异,加深记忆。
- 后续进阶:
- 官方文档、博客、本地用户组;
- 深入《SQL Performance Explained》《SQL Antipatterns》等专著。
五、一句话总结
《Learn SQL in a Month of Lunches》用“零术语、多动手”的方式,把 SQL 的核心查询、建模、函数、数据操作和性能要点压缩在 24 个短章里——每天午休学完一节,一个月后你就能自信地写出跨平台、可维护的 SQL。