进阶8:分页查询 *
应用场景:当要现实的数据,一页显示不全,需要分页提交sql请求
语法:SELECT 查询列表 7 from 表 1 【join type join 表2 2 on 连接条件 3 where 筛选条件 4 group by 分组字段 5 having 分组后筛选 6 order by 排序字段】 8 limit offset,size; 9
offset要显示条目的起始索引(起始索引从0开始)
size要显示的条目个数特点:
①limit语句放在查询语句的最后 ②公式 要显示的页数 page ,每页条目数size
select 查询列表 FROM 表 limit (page-1)*size,size
#案例1:查询前五条员工信息
SELECT * from employees LIMIT 0,5;
#或
SELECT * from employees LIMIT 5;
#案例2:查询第11条到25条的员工信息
SELECT * from employees LIMIT 10,15;
#案例3:有奖金的员工信息,并且工资较高的前10名显示出来
SELECT *
FROM employees
WHERE commission_pct is not NULL
ORDER BY salary DESC
LIMIT 0,10;
#------------------------------练习------------------------
/*
已知表 stuinfo
id 学号
name 姓名
email 邮箱 john@126.com
gradeID 年级编号
sex 性别 男 女
age 年龄
已知表 grade
id 年级编号
gradeName 年级名称
*/
#1.查询所有学生的邮箱用户名(注:邮箱中@前面的字符)
SELECT substr(email,1,instr(email,'@')-1) 用户名
FROM stuinfo;
#2.查询男生和女生的个数
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;
#4.查询哪个年级的学生最小年龄>10岁
#①查询各年级的最小年龄
SELECT min(age),gradeid
FROM stuinfo
GROUP BY gradeid
#在①的结果上进行筛选
SELECT min(age),gradeid
FROM stuinfo
GROUP BY gradeid
having MIN(age)>10
#5.试试说出查询语句中涉及的所有关键词,以及执行先后顺序
SELECT 查询列表 7
FROM 表 1
连接类型 jion 表2 2
ON 连接条件 3
WHERE 筛选条件 4
GROUP BY 分组条件 5
having 分组后的筛选 6
ORDER BY 排序列表 8
LIMIT 偏移,条目数; 9
#----------------------------------------------------------