【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!


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

相关推荐
听风吟丶2 小时前
微服务调用链追踪实战:用 SkyWalking 实现全链路可视化与故障溯源
数据库
计算机学姐2 小时前
基于Python的高校后勤报修系统【2026最新】
开发语言·vue.js·后端·python·mysql·django·flask
moluzhui2 小时前
mysql 修复插入零日期报错
数据库·mysql
霍金的微笑2 小时前
三问三[特殊字符]
学习
每次的天空2 小时前
Android车机开发——内存优化操作
android·学习·设计模式
不会c嘎嘎2 小时前
MySQL -- 深入剖析事务底层原理
数据库·mysql
wgego2 小时前
Polar靶场web 随写笔记
笔记·web
cuckooman2 小时前
obsidian如何删除已不再使用的属性?
笔记·obsidian
2501_916766542 小时前
【Git学习】Git本地仓库基础命令
git·学习