目录
1. 排序
我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
1.1 语法
以下是 SQL SELECT 语句使用 ORDER BY 子句将查询数据排序后再返回数据:
SELECT field1, field2,...fieldN FROM table_name1, table_name2... ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
-
你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
-
你可以设定多个字段来排序。
-
你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
-
你可以添加 WHERE...LIKE 子句来设置条件。
1.2 单列排序
1.2.1 升序排序
SELECT employee_id,last_name,salary FROM employees ORDER BY salary ASC;
1.2.2 降序排序
SELECT employee_id,last_name,salary FROM employees ORDER BY salary DESC;
1.2 二级排序(多列排序)
显示员工信息按照department_id降序排序,在按照salary升序排序
SELECT last_name,salary,department_id FROM employees ORDER BY department_id DESC,salary ASC;
根据结果可以看出来,按照department_id降序排列的同时,相同的department_id又按照salary升序排列。
2. 分页
2.1 背景
背景1:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢?
背景2:表里有 4 条数据,我们只想要显示第 2、3 条数据怎么办呢?
2.2 实现规则
2.2.1分页原理
所谓分页显示,就是将数据库中的结果集,一段一段显示出来需要的条件。
MySQL中使用** LIMIT **实现分页
2.2.2 语法
LIMIT [位置偏移量],[条目数]
第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移
量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条数。
举例:
#每页10条 显示第一页 SELECT employee_id,last_name FROM employees LIMIT 0,10;
#每页10条 显示第二页 SELECT employee_id,last_name FROM employees LIMIT 10, 10 ;
MySQL 8.0中可以使用“LIMIT 10 OFFSET 0”,意思是获取从第5条记录开始后面的3条记录,和“LIMIT 0,10;”返回的结果相同。
分页显式公式:(当前页数-1)*每页条数,每页条数
每页显示 pagesize条记录, 此时显示pageNo页
LIMIT (pageNo-1) * pagesize,pagesize;
SELECT * FROM table LIMIT (PageNo - 1)*PageSize,PageSize;
注意:**LIMIT** 子句必须放在整个**SELECT语句的最后!**
2.2.3综合练习:
SELECT employee_id,last_name,salary FROM employees WHERE salary>6000 ORDER BY salary DESC LIMIT 0,10;
2.3 使用 LIMIT 的好处
约束返回结果的数量可以 减少数据表的网络传输量 ,也可以 提升查询效率 。如果我们知道返回结果只有1 条,就可以使用 LIMIT 1 ,告诉 SELECT 语句只需要返回一条记录即可。这样的好处就是 SELECT 不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。