DQL续
#2020云栖大会#阿里云海量offer来啦!投简历、赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>>
DQL续
分组查询
LIMIT
语句顺序
分组查询
什么是分组查询
将查询结果按照1个或多个字段进行分组,字段值相同的为一组
SELECT sex from stduent GROUP BY sex;/* 会以sex的值不同分为多少种,相同的归为一类。每一类中其实有多少条记录还是存在,而不是像去重*/

SELECT * FROM student GROUP BY sex;/*根据sex字段来分组,sex字段的全部值只有两个('男'和'女'),所以分为了两组当group by单独使用时,只显示出每组的第一条记录所以group by单独使用时的实际意义不大*/

SELECT GROUP_CONCAT(sname) FROM student GROUP BY sex;/*通过group_concat(字段名),类还是只有两类男和女即还是两条,但是类中的那个字段名的所有记录都会有显示*/SELECT sex,GROUP_CONCAT(sno,sname,grade) AS student FROM student GROUP BY sex;


group by + 聚合函数
通过group_concat()的启发,我们既然可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个"值的集合"做一些操作
使用
SELECT class,SUM(grade) from student GROUP BY class;/* 以班分类,求grade字段的和,它的记录也是分为三组去计算*/

SELECT class,COUNT(*) from student GROUP BY class;/*统计记录条数,也是分组后,每组有多少条*/

SELECT class,COUNT(*) from student WHERE grade>=60 GROUP BY class;/* 筛选后再分组*/

group by + having
用来分组查询后指定一些条件来输出查询结果
having作用和where一样,但having只能用于group by
相当于是分组后再筛选
SELECT class,SUM(grade) from student GROUP BY class HAVING SUM(grade)>120;/* 对分组后产生的结果再筛选*/

having与where的区别
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数
WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
LIMIT
limit 参数1,参数2;
参数1:起始行号
参数2:查询多少行
0为第一行记录
SELECT * from student LIMIT 2,3;

分页思路
/* 通过翻页来查看,每页五行0-4:第一页5-9:第二页10-14:第三页*/int nowPage = 1; // 当前页,初始为第一页显示0-4行int pageTurns = 5;// 一次查询行数每当翻页{nowPage++;SELECT * from student LIMIT (nowPage - 1)*5 , pageTurns;}
语句顺序
书写顺序

执行顺序

勤学如春起之苗,不见其增,只有所长。辍学如磨刀之石,不见其增,日有所亏
本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

浙公网安备 33010602011771号