SQL准备
create table tb_students (
id int auto_increment primary key comment '主键ID',
studentid char(9) unique not null comment '学生学号',
name varchar(10) not null comment '学生姓名',
gender char(1) not null comment '学生性别'
) comment '学生表';
insert into tb_students (studentid , name , gender)
values ('202302301' , '海绵宝宝' , '男'),
('202302302' , '胡图图' , '男'),
('202302303' , '小福贵' , '男'),
('202302304' , '大头儿子' , '男'),
('202302305' , '三毛' , '男' ),
('202302306' , '柯南' , '男'),
('202302307' , '凌美琪' , '女'),
('202302308' , '凌美雪' , '女'),
('202302309' , '孙悟空' , '男'),
('202302310' , '猪八戒' , '男'),
('202302311' , '沙和尚' , '男'),
('202302312' , '唐僧' , '男'),
('202302313' , '林黛玉' , '女'),
('202302314' , '贾宝玉' , '男'),
('202302315' , '奥特曼' , '男'),
('202302316' , '汤姆' , '男'),
('202302317' , '杰瑞' , '男'),
('202302318' , '朵拉' , '女'),
('202302319' , '一休' , '男'),
('202302320' , '米老鼠' , '男'),
('202302321' , '唐老鸭' , '男'),
('202302322' , '哆啦A梦' , '男'),
('202302323' , '成龙' , '男'),
('202302324' , '小玉' , '女'),
('202302325' , '加菲猫' , '男'),
('202302326' , '喜羊羊' , '男'),
('202302327' , '灰太狼' , '男'),
('202302328' , '虹猫' , '男'),
('202302329' , '蓝兔' , '女'),
('202302330' , '洛洛' , '男');
这里面有你们喜欢的角色吗❓❓❓
没错,我也喜
┅
按照我的理解,我把他分为这两部分来进行讲解
目录
第一部分:查询指定分页语句
①limit 带一个参数
语法:limit 每页显示记录数;
注意:这种写法只在只查询第一页数据的时候使用。
案例讲解
需求1:查询第一页前 5 行的记录;
解析:查询第一页的记录,并且展示 5 条数据,直接写个 5 就可以啦。
SQL 编写:
select * from tb_students limit 5;
查询结果如下:
注:也可以带两个参数,写成 limit 0,5,跟 limit 5 效果是一样的;这两种方式都可以用;
②limit 带二个参数
语法:limit 起始索引,每页显示记录数;
计算起始索引公式:
起始索引 = 起始索引 - 1
注意:起始索引都是从 0 开始的(但不包括 0)。
案例讲解
需求:查询第 7 行的记录,显示 2 行记录;
解析:
limit 第一个参数(起始索引):
套用计算起始索引公式:起始索引 = 起始索引 - 1 ;
首先我要查询的是第 7 行的记录,那我的起始索引就是 7,那就是 7 - 1 = 6,最终我的起始索引为:6;
limit 第二个参数(每页显示记录数):
该页我要显示 2 行记录,最终我的每页显示记录数为:2。
SQL 编写:
select * from tb_students limit 6, 2;
查询结果如下:
另一种写法:
语法:limit 每页显示记录数 offset 起始索引;
计算起始索引公式:
起始索引 = 起始索引 - 1
用法和带两个参数的 limit 一样;只有语法上的区别:起始索引 和 每页显示记录数 顺序调换了,“,” 号换成了 offset。
SQL 编写:
select * from tb_students limit 2 offset 6;
得到同样的执行结果:
第二部分:查询固定分页语句
语法:limit 起始索引,每页显示记录数;
计算起始索引公式:
起始索引 = (查询页码 - 1)* 每页显示记录数
案例讲解
需求:固定每页展示 5 条记录,求 1 - 3 页的记录;
第①页
解析:
limit 第一个参数(起始索引):
套用计算起始索引公式:起始索引 = (查询页码 - 1)* 每页显示记录数
因为是查询第一页的数据,所以查询页码是 1,然后 1 还要去 - 1,得出:(1 - 1) = 0;
再 * 每页显示记录数,每页要显示 5 条的记录,得出: 0 * 5 = 0,最终我的起始索引为:0;
limit 第二个参数(每页显示记录数):
该页我要显示 5 行记录,最终我的每页显示记录数为:5。
SQL编写:
select * from tb_students limit 0,5;-- 显示 1 - 5 行记录
查询结果如下:
第②页
解析:
limit 第一个参数(起始索引):
套用计算起始索引公式:起始索引 = (查询页码 - 1)* 每页显示记录数
因为是查询第一页的数据,所以查询页码是 2,然后 2 还要去 - 1,得出:(2 - 1) = 1;
再 * 每页显示记录数,每页要显示 5 条的记录,得出: 1 * 5 = 0,最终我的起始索引为:5;
limit 第二个参数(每页显示记录数):
该页我要显示 5 行记录,最终我的每页显示记录数为:5。
SQL编写:
select * from tb_students limit 5,5;-- 显示 6 - 10 行记录
查询结果如下:
第③页
解析:
limit 第一个参数(起始索引):
套用计算起始索引公式:起始索引 = (查询页码 - 1)* 每页显示记录数
因为是查询第一页的数据,所以查询页码是 3,然后 3 还要去 - 1,得出:(3 - 1) = 2;
再 * 每页显示记录数,每页要显示 5 条的记录,得出: 2 * 5 = 10,最终我的起始索引为:10;
limit 第二个参数(每页显示记录数):
该页我要显示 5 行记录,最终我的每页显示记录数为:5。
SQL编写:
select * from tb_students limit 10,5;-- 显示 11 - 15 行记录
查询结果如下:
完整SQL:
select * from tb_students limit 0,5;-- 显示 1 - 5 行记录
select * from tb_students limit 5,5;-- 显示 6 - 10 行记录
select * from tb_students limit 10,5;-- 显示 11 - 15 行记录
如果要查询第四页、第五页、第六页......的数据,按照这个公式,以此类推。。。
如果学会了,来做一下练习吧!!!
需求:固定每页展示 10 条记录,求 1 - 3 页的记录;
select * from tb_students limit ?;
select * from tb_students limit ?;
select * from tb_students limit ?;
做完看答案:
✿
✿
✿
✿
✿
✿
✿
✿
✿
✿
select * from tb_students limit 0,10;-- 显示 1 - 10 行记录
select * from tb_students limit 10,10;-- 显示 11 - 20 行记录
select * from tb_students limit 20,10;-- 显示 20 - 30 行记录
完。。。