05_排序与分页

1.排序数据

在这里插入图片描述

1.1排序规则

如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。

  • 使用ORDER BY子句排序
    • ASC (ascend):升序
    • DESC (descend):降序
  • ORDER BY子句在SELECT语句的结尾。

1.2单列排序

1.简单使用排序

#如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。
select * from employees;

#练习:按照salary从高到低的顺序显示员工信息

#使用ORDERBY对查询到的数据进行排序操作。
#升序:ASC ( ascend)
#降序:DESC (descend)
select employee_id,last_name,salary
from employees
ORDER BY salary DESC;#如果在ORDER BY后没有显式指名排序的方式的话,则默认按照升序排列。
在这里插入图片描述

2.使用列的别名进行排序

#我们可以使用列的别名,进行排序
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
ORDER BY annual_sal;
在这里插入图片描述
在这里插入图片描述

3.强调格式:WHERE需要声明在FROM后,ORDER BY之前。

ORDER BY 排序的字段,不一定是查询字段。(即ORDER BY的字段可以不存在于SELECT语句中)
为什么列的别名只能在ORDER BY 中使用,不能在WHERE中使用呢?
1.SQL语句执行顺序不是按照从前往后顺序执行的,而是先执行FROM employees ,先找到查哪一个表,然后执行WHERE语句,看看有哪些过滤条件;
2.然后才执行SELECT语句,看看需要查哪些字段,同时才可能对列起一个别名
3.接下来执行ORDER BY,此时基于有别名了,所以排序时可以通过
在这里插入图片描述

1.3多列排序

  • 可以使用不在SELECT列表中的列排序。
  • 在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。

二级排序

#练习:显示员工信息,按照department_id的降序排列,salary的升序排列
SELECT employee_id, salary ,department_id
FROM employees
ORDER BY department_id DESC,salary ASC;
在这里插入图片描述

2.分页

2.1背景

背景1:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢?

背景2:表里有4条数据,我们只想要显示第2、3条数据怎么办呢?

2.2实现规则

#2.1 mysql使用limit实现数据的分页显示
#需求:每页显示20条记录,此时显示第1页

需求:每页显示pagesize条记录,此时显示第pageNo页:
公式:LIMIT (pageNo-1)* pagesize,pagesize;

SELECT employee_id, last_name
FROM employees
LIMIT 0,20;
在这里插入图片描述

WHERE … ORDER BY … LIMIT 声明顺序如下:

#需求:每页显示pagesize条记录,此时显示第pageNo页:
#公式:LIMIT (pageNo-1)* pagesize,pagesize;
SELECT employee_id, last_name,salary
FROM employees
where salary >6000
ORDER BY salary DESC
LIMIT 0,20;
在这里插入图片描述

练习:表里有107条数据,我们只想要显示第32、33条数据怎么办呢?

SELECT employee_id, last_name,salary
FROM employees
LIMIT 31,2;
在这里插入图片描述

MySQL8.0新特性: LIMIT … OFFSET

SELECT employee_id, last_name,salary
FROM employees
LIMIT 2 OFFSET 31;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3拓展

在这里插入图片描述

练习

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值