快速掌握 ANSI SQL 的核心策略是:先建立“集合思维”,再死磕“核心语法”,最后通过“实战刷题”固化。 不要试图背诵所有细节,而是聚焦于 80% 场景下最常用的 20% 语法。
以下是为你定制的 3 周速成路线图,从零基础到熟练查询。
目标: 理解 SQL 是什么,能写出简单的单表查询。
SQL 不同于 Python 或 Java。你不需要告诉电脑“怎么去拿数据”,只需要告诉它“你要什么数据”。
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT
注意:书写顺序(SELECT 在前)和执行顺序(FROM 在前)是不同的,理解这一点能解决 90% 的逻辑错误。=, >, <, <>, BETWEEN, IN, LIKE, IS NULL)。AND, OR, NOT。ASC 升序, DESC 降序)。练习建议: 找一张简单的用户表(Users),练习查询“年龄大于 18 岁且来自北京的用户,按注册时间倒序排列,只取前 10 个”。
目标: 处理多表关联和数据分析。这是 SQL 的精髓。
COUNT(), SUM(), AVG(), MAX(), MIN()。不要死记笛卡尔积,只要记住这几种图(Venn Diagram):
IN, EXISTS, WITH (CTE 公用表表达式)。练习建议:
Orders (订单) 和 Customers (客户)。目标: 处理复杂逻辑,适应面试和真实工作场景。
这是区分新手和熟手的关键。用于在不减少行数的情况下进行排名或累计。
ROW_NUMBER(), RANK(), DENSE_RANK()。LAG(), LEAD() (取前一行或后一行数据)。SUM(...) OVER(...)。SQL 里的 if-else。
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 60 THEN 'B'
ELSE 'C'
END
除了查询(SELECT),还要知道怎么改数据:
INSERT INTOUPDATE (记得加 WHERE,否则全表更新!)DELETE (记得加 WHERE,否则全表删除!)IFNULL vs NVL vs COALESCE)。先学通用的 ANSI SQL 标准(如 COALESCE)。NULL 不等于任何值,甚至不等于 NULL。WHERE col = NULL 是永远查不出数据的,必须用 WHERE col IS NULL。ON 条件会导致笛卡尔积,数据量爆炸。| 时间 | 主题 | 关键动作 |
|---|---|---|
| 第 1 天 | 环境 & 基础 | 在 SQLiteOnline 上运行第一个 SELECT,理解执行顺序。 |
| 第 2-3 天 | 过滤 & 排序 | 熟练使用 WHERE, LIKE, IN, ORDER BY, LIMIT。 |
| 第 4-5 天 | 聚合 & 分组 | 搞懂 GROUP BY 和 HAVING,区分 WHERE 和 HAVING。 |
| 第 6-7 天 | 连接 (Joins) | 画图理解 LEFT JOIN 和 INNER JOIN,做 10 道练习题。 |
| 第 8-10 天 | 子查询 & CTE | 学会用 WITH 语句让代码更清晰。 |
| 第 11-13 天 | 窗口函数 | 重点攻克 ROW_NUMBER 和 SUM OVER。 |
| 第 14-15 天 | 综合刷题 | 去 LeetCode 刷 5 道 Medium 题,查漏补缺。 |
按照这个路径,你将在 3 周内建立起扎实的 ANSI SQL 核心能力。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。