Learn SQL in a Month of Lunches
作者: Jeff Iannucci
语言: 英文
出版年份: 2025
编程语言: SQL
下载链接:
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。

书籍摘要

一、图书定位与特色

  • 零门槛入门:面向完全没有编程背景的读者;只需具备英语阅读与基础办公表格(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. 非聚簇;何时创建与性能权衡。
  • 视图 & 存储过程:封装复杂查询;接受输入参数。
  • 游标:逐行处理场景及避免游标的集合思维。

四、学习路径建议

  1. 按顺序阅读:每章建立在上一章之上,务必完成 Lab 再前进。
  2. 动手为王:作者 GitHub 提供 sqlnovel 数据库脚本与答案,鼓励边敲边学。
  3. 举一反三
    • 把 sqlnovel 换成自己业务库,复现每章查询。
    • 对比不同 RDBMS 的函数差异,加深记忆。
  4. 后续进阶
    • 官方文档、博客、本地用户组;
    • 深入《SQL Performance Explained》《SQL Antipatterns》等专著。

五、一句话总结

《Learn SQL in a Month of Lunches》用“零术语、多动手”的方式,把 SQL 的核心查询、建模、函数、数据操作和性能要点压缩在 24 个短章里——每天午休学完一节,一个月后你就能自信地写出跨平台、可维护的 SQL。

期待您的支持
捐助本站