如果要我推荐一本提升 SQL 编程水平的书籍,我大概率会推荐这本书——《SQL 经典实例》。
《SQL 经典实例》基于 「SQL Cookbook (Cookbooks (O'Reilly))」 翻译而来,ISBN: 9780596009762。《SQL Cookbook》于 2005 年出版,至今已过去十多年,然而书中的很多内容并没有过时。
推荐理由
这本书具有这些特点:
- 涵盖多个数据库平台,包括了 SQL Server、Oracle、MySQL、PostgreSQL 和 DB2。如果你只熟悉 MySQL,那么在实例里你能看到在其它平台上(比如 Oracle、SQL Server)的解决方案。
- 丰富的实例,书中涵盖了 150 多个 SQL 常见问题及其解决方案。这些实例包括但不限于日期运算、字符串操作、行列转换、窗口函数、树形查询。
- 详细的解题思路。针对每个问题,作者先把问题分解,再提出解题思路。对于稍微复杂点的问题,作者会用比较多的篇幅呈现每个步骤的结果,以及解释为什么会这么做的理由。
这本书的实例很经典,很多实例你可能在工作中已经遇到过或者曾经在某些地方看到过。比如:
随机返回若干行记录;
把 Null 值转换为实际值;
依据条件逻辑动态调整排序项;
从一个表检索与另一个表不相关的行;
确定两个表是否有相同的数据;
从多个表中返回缺失值;
删除重复记录;
统计字符出现的次数;
提取第 n 个分隔子字符串;
累计求和;
计算两个日期之间的天数;
计算一个月的第一天和最后一天;
识别重叠的日期区间;
为值区间填充缺失值;
计算所有可能的表达式组合的小计;
找出给定的父节点对应的所有子节点。
...
如何阅读这本书
如果你是初学者,不妨从书的第一章开始阅读。把书上的题目按自己的理解先做一遍,再比对答案。提升 SQL 编程水平的捷径就是多看多练,关键在于“练”,与其看三四遍,不如自己亲自动手写一遍。
如果你已经是很有经验的 SQL 开发人员,可以把这本书当成工具书,遇到问题了就翻开这本书找对应的解决方案。
当你认真看完这本书,你完全能解决工作中遇到的大部分关于 SQL 查询的需求,你去做 LeetCode 和 HackerRank 上的SQL 题目完全没有问题。
为方便大家讨论书上的实例,交流刷 SQL 题的经验,我建了个 SQL 讨论群。在后台联系我,我拉你进群,一起学习,一起进步。