【MySQL 零基础入门】DQL 核心语法(三):学生表排序查询与分页查询篇

在前两篇中,我们学会了 DQL 的基础查询、聚合函数、条件查询和分组查询,今天要学习的 排序查询分页查询 是 DQL 的收尾技巧,也是业务开发中必备的 ------ 比如 "按成绩降序展示学生""分页显示班级列表",都离不开这两个知识点。所有案例仍基于 sicheng 数据库的 student 表。


目录

一、排序查询:按指定规则排列结果

[1. 排序查询基本语法](#1. 排序查询基本语法)

[2. 排序方式说明](#2. 排序方式说明)

[3. 排序查询实战案例](#3. 排序查询实战案例)

[4. 排序查询的业务场景](#4. 排序查询的业务场景)

二、分页查询:实现数据分页展示

[1. 分页查询基本语法](#1. 分页查询基本语法)

[2. 关键参数说明](#2. 关键参数说明)

[3. 分页查询实战案例](#3. 分页查询实战案例)

[4. 分页查询注意事项](#4. 分页查询注意事项)

三、综合案例:多语法组合使用

四、核心知识点总结

[五、预告:DQL 执行顺序与 DCL 权限控制](#五、预告:DQL 执行顺序与 DCL 权限控制)


一、排序查询:按指定规则排列结果

排序查询的核心是 order by 子句,位于 group by/having 之后,limit 之前,支持单字段排序和多字段排序。

1. 排序查询基本语法

sql 复制代码
select 字段列表 
from 表名 
[where 条件] 
[group by 分组字段] 
order by 字段1 排序方式1, 字段2 排序方式2;

2. 排序方式说明

排序方式 关键字 说明 是否可省略
升序 asc 从小到大排列(如成绩从低到高) 是(默认升序)
降序 desc 从大到小排列(如成绩从高到低) 否(必须显式指定)

3. 排序查询实战案例

案例 1:单字段升序排序

需求:查询所有学生,按年龄升序排列(默认 asc,可省略)。

sql 复制代码
select * from student order by age asc;

select * from student order by age ;

执行结果:年龄从 16→17→18 排列,16 岁的学生排在最前面。

案例 2:单字段降序排序

需求:查询高一 (1) 班的学生,按成绩降序排列。

sql 复制代码
select * from student where class = '高一(1)班' order by score by desc;

案例 3:多字段排序(核心考点)

多字段排序规则:先按第一个字段排序,当第一个字段值相同时,再按第二个字段排序

需求:查询所有学生,先按年龄升序排列,年龄相同则按成绩降序排列。

sql 复制代码
select * from student order by age asc, score desc;

4. 排序查询的业务场景

排序是前端展示的高频需求,比如:

  • 教务系统:按成绩降序展示班级排名;
  • 电商平台:按销量降序 / 价格升序展示商品;
  • 通讯录:按姓名首字母升序展示联系人。

二、分页查询:实现数据分页展示

分页查询是互联网项目的标配(比如一页显示 10 条学生记录),MySQL 中用 limit 关键字实现,语法简单但计算逻辑要记牢。

1. 分页查询基本语法

sql 复制代码
select 字段列表 
from 表名 
[where 条件] 
[order by 排序字段] 
limit 起始索引, 查询记录数;

2. 关键参数说明

  • 起始索引:从 0 开始计数(第一页起始索引为 0);
  • 查询记录数:每页显示的记录条数;
  • 起始索引计算公式起始索引 = (查询页码 - 1) × 每页记录数(核心公式,必须记牢)。

3. 分页查询实战案例

假设需求:每页显示 3 条学生记录,查询第 1、2、3 页的数据。

案例 1:查询第一页(页码 1,每页 3 条)

sql 复制代码
-- 完整写法(起始索引0)
select id, name, class from student limit 0, 3;

-- 简化写法(第一页可省略起始索引0)
select id, name, class from student limit 3;

执行结果:返回前 3 条记录(id=1、2、3)。

案例 2:查询第二页(页码 2,每页 3 条)

sql 复制代码
-- 起始索引 = (2-1)×3 = 3
select id, name, class from student limit 3, 3;

执行结果:返回第 4、5、6 条记录(id=4、5、6)。

案例 3:查询第三页(页码 3,每页 3 条)

sql

sql 复制代码
-- 起始索引 = (3-1)×3 = 6
select id, name, class from student limit 6, 3;

执行结果:返回第 7、8、9 条记录(id=7、8、9);如果总记录数不足(比如只有 10 条),则返回剩余记录(不会报错)。

4. 分页查询注意事项

  1. limit 必须放在 SQL 语句的最后(在 order by 之后);
  2. 不同数据库分页语法不同:MySQL 用 limit,Oracle 用 rownum,SQL Server 用 top
  3. 大数据量分页时,起始索引过大会影响效率(比如 limit 10000, 10),需优化(如用主键分页)。

三、综合案例:多语法组合使用

需求:查询成绩大于 80 分的男生,按年龄升序排列,分页显示第 1 页(每页 2 条)。

sql 复制代码
select name, age, score, gender 
from student 
where score > 80 and gender = '男'  -- 条件过滤
order by age asc  -- 排序
limit 2;  -- 分页(第一页,每页2条)

执行结果:

  • 张三(16 岁,85.5 分);
  • 李四(17 岁,92.0 分)。

四、核心知识点总结

知识点 核心内容 易错点
排序查询 order by 字段 排序方式;多字段排序先按第一个字段,同值再按第二个 降序必须写 desc,升序可省略 asc
分页查询 limit 起始索引, 记录数;起始索引 = (页码 - 1)× 每页条数 起始索引从 0 开始,第一页可省略起始索引
语法顺序 whereorder bylimit(limit 必须在最后) limit 放在 where 前会报错
综合使用 条件 + 排序 + 分页组合,是业务开发的典型写法 分页前必须先排序(否则分页结果无序)

五、预告:DQL 执行顺序与 DCL 权限控制

本文我们掌握了排序和分页查询,接下来会讲解 DQL 语句的执行顺序 (面试高频考点,编写顺序≠执行顺序),以及 MySQL 的权限控制语言 DCL------ 这是管理数据库权限的核心,比如 "创建用户""授予查询权限"。关注我,下一篇收尾 DQL 并入门 DCL!


希望这篇文章对你有帮助,如果你有任何问题或建议,欢迎在评论区留言。谢谢阅读(求攒攒 收藏 关注)!

相关推荐
随风飘的云25 分钟前
mysql的innodb引擎对可重复读做了那些优化,可以避免幻读
mysql
NineData11 小时前
NineData 迁移评估功能正式上线
数据库·dba
tingshuo291711 小时前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记
NineData17 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师19 小时前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石1 天前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
倔强的石头_2 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou643 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
于眠牧北3 天前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
李广坤4 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库