MySQL_06limit分页查询
MySQL_06limit分页查询
1.limit的作用
limit可以将查询结果的一部分取出来。通常用于分页查询中。
分页查询是为了提高用户体验。因为当数据过多时,如果一次将所有数据都查出来,用户的体验就会很差。分页后,用户可以一页一页翻看。
比如在搜索引擎中搜索的结果条目都是分页显示的。
2.limit的使用
完整用法:limit startIndex,length
- startIndex:起始下标;
- length:长度
缺省用法:limit 5
- 表示取前5行的数据
案例1:按照薪资降序排列,取出排名前五的员工
缺省用法:
mysql> select ename,sal from emp order by sal desc limit 5;
+-------+---------+
| ename | sal |
+-------+---------+
| KING | 5000.00 |
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
5 rows in set (0.00 sec)
完整用法:
mysql> select ename,sal from emp order by sal desc limit 0,5;
+-------+---------+
| ename | sal |
+-------+---------+
| KING | 5000.00 |
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
+-------+---------+
5 rows in set (0.00 sec)
注意:mysql中,limit在order by之后执行。
案例2:取出工资排名在[2-6]名的员工
#1表示从下标为1的位置开始查询,也就是排名第二的员工
#5表示长度
mysql> select ename,sal from emp order by sal desc limit 1,5;
+-------+---------+
| ename | sal |
+-------+---------+
| SCOTT | 3000.00 |
| FORD | 3000.00 |
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
+-------+---------+
5 rows in set (0.00 sec)
3.分页查询
假如说现在需要将12条数据进行分页,要求每页显示3条记录。
limit的用法:limit startIndex,length
第1页:limit 0,3 [1,2,3]
第2页:limit 3,3 [4,5,6]
第3页:limit 6,3 [7,8,9]
第4页:limit 9,3 [10,11,12]
设页数为pageNo,每页显示pageSize条记录
观察以上数据可得规律:
- startIndex = (pageNo - 1) * pageSize
- length = pageSize
第pageNo页:limit (pageNo - 1) * pageSize,pageSize
假如现在用户想查询第4页的数据
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//用户提交过来一个页码,以及每页显示的记录条数
int pageNo = 4;//第4页
int pageSize = 3;//每页显示3条记录
int startIndex = (pageNo - 1) * pageSize;
//sql查询语句
String sql = "select ... limit" + startIndex + "," + pageSize;
}
分页查询总结:limit (pageNo - 1) * pageSize,pageSize
4.DQL语句大总结
select ...
from ...
where ...
group by ...
having ...
order by ...
limit ...
执行顺序:
- from
- where
- group by
- having
- select
- ordrer by
- limit