分页查询
应用场景:
当要显示的数据,一页显示不全,需要分页提交sql请求
语法:
select 查询列表 ⑦
from 表 ①
【join type join 表2 ②
on 连接条件 ③
where 筛选条件 ④
group by 分组字段 ⑤
having 分组后的筛选 ⑥
order by 排序字段】 ⑧
limit 【offset】,size ⑨
offset:要显示条目的起始索引,(起始索引从0开始)
size:要显示的条目个数
案例1:查询五条员工信息
SELECT * FROM employees
LIMIT 0,5;
案例2“查询第11条-第25条的员工信息”
一共要查询:25-11+1=15
select * from employees
limit 10,15;
案例3:有奖金的员工信息,并且工资高的前10名显示出来
select * from
employees
where commission_pct is not null
order by salary desc
limit 10;
特点
1、limit语句放在查询语句的最后
2、分页查询的公式:
要显示的页数page,每页显示的条目数size
select 查询列表
from 表
limit (page-1)*size,size
size=10
page 1 0
2 10
3 20
练习:
已知表stuinfo
id:学号
name:姓名
email:邮箱
grade_id :年级编号
sex:性别
age:年龄
已知表:grade
id:年级编号
gradeName:年级名称
一、查询所有学员的邮箱的用户名(邮箱中@前边的字符)
select substr(email,1,instr(email,'@')-1) 用户名
from stuinfo;
二、查询男生和女生的个数
select count(*),sex
from stuinfo
group by sex;
三、查询年龄>18岁的所有的学生的姓名和年级名称
select name,gradeName
from stuinfo s
inner join grade g
on s.gradeId=g.id
where age>18;
四、查询哪个年级的学生的年龄大于20岁
①查询每个年级的最小年龄
select min(age),gradeId
from stuinfo
group by gradeId;
在①的结果上进行筛选
select min(age),gradeId
from stuinfo
group by gradeId
having min(age)>20;
五、说出查询语句中涉及到的所有的关键字,以及执行的先后顺序
select 查询列表
from 表
连接 类型 join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序列表
limit 偏移,条目数
执行顺序 :
先from
在执行 join
接着 on
接着where
接着group by
接着 having
接着select
在接着 order by
最后 limit
没执行一步:都会生成一张虚拟的表。