# P23 23. 基础-SQL-DQL小结

> 本页是学习笔记，不等同于视频逐字稿。原声字幕未取得（匿名接口字幕轨为空且需登录，未使用任何账号），也没有逐句讲解记录；讲义只按节与页码对应，切点未逐句确证。

> 以同版讲义的公开镜像核对章节与页码（镜像非官方出品）；非逐字稿，示例为原创补充。

## P23 23. 基础-SQL-DQL小结

- 原视频：https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=23（p=23），时长 3:11
- 讲义：参照前节整理，无独立讲义正文；参照前节 2.6 DQL（p38–50）

- 本集练习数据：practice/p23.sql（先执行，再对照小例）

### 一句话理解

这一集把 DQL 的六个子句收成一张图：谁筛行、谁筛组、别名能写在哪。

### 要点

- 六个子句：`SELECT 字段 FROM 表 WHERE 行条件 GROUP BY 分组列 HAVING 组条件 ORDER BY 排序列 LIMIT 分页`。
- 两个过滤位置：WHERE 在分组前筛行；HAVING 在分组后筛组，可以写聚合值（`HAVING COUNT(*) >= 2`）。
- 别名只向后生效：ORDER BY 能用 `SELECT` 里起的别名，WHERE 不能用。

### 30 秒回忆

六子句、两个过滤位置（WHERE 行 / HAVING 组）、别名只向后生效。

关联课：P18 18. 基础-SQL-DQL-分组查询 · P19 19. 基础-SQL-DQL-排序查询 · P20 20. 基础-SQL-DQL-分页查询 · P22 22. 基础-SQL-DQL-执行顺序

### 自测

1. 哪两个子句最容易混？依据什么区分？
   - 答：WHERE 和 HAVING。依据是作用对象与时机：WHERE 对行、在分组前；HAVING 对组、在分组后，可以包含聚合值。

### 材料与来源

- [平台视频页] P23 原视频页（BV1Kr4y1i7ru） https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=23
- [官方文档] MySQL 8.0 Reference：SELECT 语句 https://dev.mysql.com/doc/refman/8.0/en/select.html

证据说明：讲义无“小结”正文；本页参照前节 2.6 DQL（p38–50）整理。画面 t60 帧为 DQL 小结页，列出 SELECT/FROM/WHERE/GROUP BY/HAVING 与运算符清单；原声字幕未取得，讲师逐句讲解未核。
