排序查询
排序方式有两种:
- ASC:升序排序,ascend
- DESC:降序排序,descend
排序的语法是:
select 字段 from user order by 字段 规则, 字段 规则...;
将用户按照年龄升序排序:
select * from user order by age asc;
升序是默认排序规则,可以省略:
select * from user order by age;
将学生按照成绩降序排序:
select name, score from students order by score desc;
也可以对多个字段进行排序,先按分数降序排序,如果两条记录分数相同,则再按照年龄升序排序:
select name, score from students order by sscore desc, age asc;
分页查询
分页查询是非常常见的一种需求,对查询结果进行分页,既能节省数据库性能,又能提高查询效率。
分页查询的语法比较灵活,有以下几种方式:
# limit 后面只有一个数字,表示不进行偏移,也就是从表的第1条数据开始查询
select 字段 from 表名 limit 查询记录数;
# limit 后面有两个数字,分别表示偏移量(从第几条数据开始查询)和要查询的数量
select 字段 from 表名 limit 起始索引,查询记录数;
# 作用和上一条相同
select 字段 from 表名 limit 查询记录数 offset 起始索引;
进行分页查询时,假如每页显示10条数据,那么就用 limit 限制查询的数量为 10 条记录。查询第1页,就是从数据库的第一条数据开始,偏移量就是我们所说的页码,偏移量从0开始计算,据此可以得到一条查询语句:
select * from user limit 10 offset 0;
# 或者
select * from user limit 0 10;
如果要查询第2页的数据,偏移量就从第 10 条开始计算,也就是(页码-1)*每页显示的数量:
select * from user limit 10 offset 10;
可以得出一个计算分页查询的公式,假设页码是 m,每页展示数据n 条,那么:
limit = n;
offset = (m-1) * n;
小结
本文介绍了 MySQL 的分页查询和排序,属于非常常见的查询需求,语法也很简单,用到的关键字是:
- order by 、asc、desc
- limit、offset