前言
在上一讲MySQL第6讲–DQL(数据查询语言)的基本操作之基本和条件查询中我们介绍了基本查询和条件查询的基本知识,以及对应的案例,今天这一讲我们讲一下,聚合函数、分组查询、排序查询、分页查询的知识;
聚合函数
-
定义
聚合函数:将一列数据作为一个整体,进行纵向计算; -
常见的聚合函数
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
- 语法
SELECT 聚合函数(字段列表) FROM 表名; # 所有的null值不参与聚合函数的计算
- 案例
案例1:统计该企业员工的数量
select count(*) from employ;
统计结果如下:
案例2:统计该企业员工的平均年龄;
select avg(employ.age) from employ;
统计结果如下:
案例3:统计该企业员工的最大年龄;
select max(employ.age) from employ;
统计结果如下:
案例4:统计该企业员工的最小年龄;
select min(employ.age) from employ;
统计结果如下:
案例5:统计北京地区员工的年龄之和;
select * from employ where employ.address='北京';
第一步:找出所有地址是北京的员工
第二步:再计算他们的年龄之和;
select sum(age) from employ where employ.address='北京';
计算结果如下:
分组查询
- 语法
SELECT 字符段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组惠后过滤条件]
- where和having过滤条件的区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件的不进行分组;having是分组之后进行过滤;
- 判断条件不同:where不能对聚合函数进行判断,而having可以;
- 案例
案例1:根据性别分组,统计男性员工和女性员工的数量;
select gender, count(*) from employ group by gender;
统计结果如下:
案例2:根据性别分组,统计男性员工和女性员工的平均年龄;
select avg(age) from employ group by gender;
统计结果如下:
案例3:查询年龄小于等于25的员工,并根据工作地址分组,获取员工数量大于等于2的地址;
select employ.address, count(*) from employ where age<=25 group by address having count(*)>=2;
查询筛选之后的结果:
为了方便查看我们也可以给 count(*)重命名;
select employ.address, count(*) count_address from employ where age<=25 group by address having count(*)>=2;
排序查询
- 语法
SELECT 列表字段 FROM 列表 ORDER BY 字段1 排列方式1,字段2 排列方式2;
# 注意:多字段排序时,第一个字段值相同,则会根据第二个字段规则进行排序
- 排序方式
名称 | 功能 |
---|---|
ASC | 升序(默认) |
DESC | 降序 |
- 案例
案例1:根据年龄对公司员工进行降序排序;
select * from employ order by age desc;
排序之后的结果:
案例2:根据入职时间对公司员工进行降序排序;
select * from employ order by intime asc;
排序之后的结果:
案例2:根据入职时间对公司员工进行升序排序,如果入职时间相同则根据年龄进行降序排序;
select * from employ order by intime, age desc;
# select * from employ order by intime; 作用是根据入职时间进行升序排序
# age desc; 作用是根据前面的排序结果进行降序排序;
排序结果如下:
分页查询
- 语法
SELECT 查询列表 FROM 表名 LIMIT 起始索引,查询记录数;
# 注意:起始索引=(页码-1)*每一页查询记录数
+案例
案例1:查询第一页员工记录,每页展示3条记录;
select * from employ limit 0, 3;
案例2:查询第2页员工记录,每页展示3条记录;
select * from employ limit 3, 3;
好了DQL基本操作到此为止就讲完了。
如有错误欢迎指正,如果帮到您了请点赞加收藏哦!