MySQL 05 章——排序与分页
一、排序
(1)排序规则
- 使用ORDER BY子句排序
- ASC(ascend):升序(从上至逐渐升高)
- DESC(descend):降序(从上至下逐渐降低)
- ORDER BY子句在SELECT语句的结尾
- 当我们不指定顺序时,查询结果的顺序默认是我们添加数据的顺序
- 如果在ORDER BY后面没有显式指明排序方式的话,则默认按照升序排列
- 我们可以使用列的别名,进行排序
- 列的别名只能在ORDER BY中使用,不能在WHERE中使用。因为ORDER BY子句在SELECT后执行
- 当WHERE和ORDER BY同时出现时,一定要把WHERE写在ORDER BY前面(执行顺序是,先执行FROM和WHERE,再执行SELECT,最后执行ORDER BY)
(2)单列排序
- 单列排序就是只有一种排序规则
- 举例:
(3)多列排序
- 多列排序就是有多种排序规则
- 举例:
二、分页
(1)背景
- 背景1:查询返回的数据太多了,查看起来很不方便,怎么样能够实现分页查询呢?
- 背景2:表里有4条数据,我们只想要显示第2、3条数据怎么办呢?
(2)实现规则
- 举例:
- 如果我们想显示第二页的数据,那么就要修改偏移量。指针最开始是指向第一条数据的,第一条数据对应的偏移量为0。那么第21条数据对应的偏移量就是20
- 规律:如果我们想每页显示20条数据。那么第一页:LIMIT 0,20;第二页:LIMIT 20,20;第三页:LIMIT 40,20
- 公式:如果我们想显示第n页的数据(每页有m条数据),那么LIMIT (n-1)*m,m
- WHERE...ORDER BY...LIMIT...声明顺序如下(当偏移量为0时,0可以省略不写):
- 实现背景2的需求:
- MySQL8.0的新特性:LIMIT 数据条数 OFFSET 偏移量
- 练习:查询员工表中工资最高的员工信息
三、课后练习
- 查询员工的姓名和部门号和年薪,按年薪降序、按姓名升序显示
- 选择工资不在8000到17000的员工的姓名和工资,按工资降序,显示第21到40位置的数据
- 查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序
该笔记根据尚硅谷的MySQL课程整理