MySQL 视频课 · 50 集 / DQL 进阶:分组、排序、分页、综合案例、执行顺序 / P20
第 20 集 / 共 50 · DQL 进阶:分组、排序、分页、综合案例、执行顺序 · 视频 p=20 · 时长 5:34
P20 20. 基础-SQL-DQL-分页查询
看视频,对照阅读:在新标签打开原视频(p=20)
分页查询只有一个 LIMIT,但要算对起始索引,并配一个确定的排序。
复习模式:快速跳知识点(详解在下方各节)
复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。
一句话理解
LIMIT 让查询只返回一段连续的行,用来做“第几页”。
按这 4 步做
- 写 LIMIT 起始索引, 查询记录数;起始索引是“跳过多少行”,从 0 开始数。
- 换算页码:起始索引 =(页码 − 1)× 每页条数。第 2 页每页 10 条就是 LIMIT 10, 10。
- 第一页可以省略起始索引,直接 LIMIT 10;但这种省略只在第一页成立。
- 分页前先写 ORDER BY,否则每次“跳过”的可能不是同一批行。
小例
SELECT id, name
FROM employee
ORDER BY id
LIMIT 2, 2;
【原创演示】四行练习数据按 id 升序是 1、2、3、4。LIMIT 2,2 表示跳过前 2 行再取 2 行,所以返回 id 3(小陈)和 id 4(小李)。如果写成 LIMIT 2 则只取前 2 行,含义完全不同。
易错点
- 把起始索引当页码:LIMIT 2, 5 是“跳过 2 行取 5 行”,不是“第 2 页”。
- 不带 ORDER BY 就翻页:数据库没有义务保持行序,第 2 页可能出现第 1 页已经出现过的行。
- 以为 LIMIT 是通用写法:分页是各数据库的方言,其它库用 TOP、FETCH 或 ROWNUM。
30 秒速记
LIMIT 偏移, 条数;偏移 =(页码−1)×每页条数;第一页可只写条数;分页必须配 ORDER BY。
自测(2 题,先答再展开)
自测 1:每页 5 条,要第 3 页,LIMIT 后面写什么?
LIMIT 10, 5。(3−1)×5 = 10,跳前两页共 10 行,再取 5 行。
自测 2:既然 LIMIT 能截断,为什么还强调先 ORDER BY?
LIMIT 只按数据库返回的顺序截取,而没写 ORDER BY 时这个顺序不确定;同一句 SQL 两次执行可能截到不同的行。
材料与来源
展开材料出处、讲义页码与证据等级
| 材料 | 类型 / 位置 | 支持了什么 |
|---|---|---|
| P20 原视频页(BV1Kr4y1i7ru) | 平台视频页 · P20;采样静帧 t012/t20/t30/t40/t50/t60/t70/t80/tend | t30/t40/t50/tend 为“DQL-分页查询 1.语法”页。 |
| MySQL 8.0 Reference:SELECT … LIMIT | 官方文档 | 核对 LIMIT 的两种参数含义,未逐字引用。 |
按 t30/t40/t50/tend 帧核对:画面为“DQL-分页查询 1.语法”,语法行是 SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;页内注明起始索引从 0 开始、等于(页码−1)×每页记录数、第一页可简写 limit 10、分页是数据库方言。无字幕,讲师口述与演示结果未核实,小例与数字为原创。
讲义对照:讲义 2.6.7 分页查询 · p48(公开镜像;按主题对应,切点 notexact)
- 画面静帧 9 帧,采样点 0:12–5:21 / 全片 5:34(只用于确认画面主题,不作内容边界)
- 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号
等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。