一.排序数据
1.1排序规则
使用ORDER BY 子句排列
ASC(ascend):升序
DESC(descend):降序
ORDER BY 子句在SELECT 语句的结尾。
1.2单列排序
不指明排序方式的话,默认时升序排序。
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;
降序排序 在最后面补一个DESC,升序也是同样的道理.
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
1.3多列排序
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
从图中可以看到,这里对departmeng_id进行升序排列,在department_id相同的情况下,对salary进行降序排列。
可以使用不在SELECT列表中的列排序。
在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序,如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。
2.分页
2.1背景
背景1:查询返回的记录太多了,查看起来很不方便,怎么样才能实现分页查询呢?
背景2:表里有4条数据,我们只想要显示第2,3条数据怎么办呢?
2.2 实现规则
分页原理
所谓分页显示,就是将数据库中的结果集,一段一段显示出来需要的条件。
MySQL中使用 LIMIT 实现分页
格式:LIMIT 位置偏移量, 行数
第一个“位置偏移量”参数只是MySQL从哪一行开始显示,是一个可选参数,如果不指定位置偏移量,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,依次类推);第二个参数 “行数”指示返回的记录条数。
举例:
--前10条记录:
SELECT * FROM 表名 LIMIT 0,10;
--或者
SELECT * FROM 表名 LIMIT 10;
--第11至20条记录:
SELECT * FROM 表名 LIMIT 10,10;
--第21至30条记录:
SELECT * FROM 表名 LIMIT 20,10;
MySQL8.0中可以使用 “LIMIT 3 OFFSET 4”,意思是获取从第5条记录开始后面的3条记录,和"LIMIT 4,3"返回的结果相同。
分页显示公式:(当前页数-1) * 每页条数,每条条数
SELECT * FROM table
SELECT *
FROM table
LIMIT(PageNo - 1)*PageSize,PageSize;
# 需求1:每页显示20条记录,此时显示第1页
SELECT employee_id,last_name
FROM employees
LIMIT 0,20;
# 需求2:每页显示20条记录,此时显示第2页
SELECT employee_id,last_name
FROM employees
LIMIT 20,20;
# 需求3:每页显示20条记录,此时显示第3页
SELECT employee_id,last_name
FROM employees
LIMIT 40,20;
#练习:表里有107条数据,我们只想要显示第 32、33 条数据怎么办呢?
SELECT employee_id,last_name
FROM employees
LIMIT 31,2;
注意:LIMIT 子句必须放在整个SELECT 语句的最后
使用LIMIT的好处
约束返回结果的数量可以减少数据表的网络传输量,也可以提升查询效率。如果我们知道返回结果只有1条,就可以使用LIMIT 1,告诉SELECT语句只需要返回一条记录即可。这样的好处就是SELECT 不需要扫码完整的表,只需要检索到一条符合条件记录的记录即可返回。