一:聚合查询
1.聚合函数
(1)count(column):返回查询到的数据的数量
(2)sum(column):返回查询到数据的总和
(3)avg(column):返回查询到数据的平均值
(4)max(column):返回查询到数据的最大值
(5)min(column):返回查询到数据的最小值
2.count用法
查询一张表有多少数据(查询所有null和not null数据总和)
select count(*)
from table_name
where 条件语句;
eg:查询一个班数学成绩高于70的学生人数
select count(*)
from student
where math>70;
3.sum用法(加null值相当于0)
select sum(column)
from table_name
where 条件语句;
eg:查询数学成绩小于60分的成绩的和
select sum(math)
from student
where math<60;
4.avg用法(如果有null等部分和规范的数据直接忽略掉)
*计算的列值
select avg(column)
from table_name;
5.max的用法(遇到null直接忽略)
select max(column)
from table_name;
6.min用法(遇到null直接忽略)
select min(column)
from table_name;
7.ifnull函数
mysql中控制流函数之一,接受两个参数,如果不为null,则返回第一个参数,否则返回第二个参数。
语法:ifnull(expression1,expression2);
8.group by分组查询
(不能加where)
按照每一个分组查询不同信息
eg:按照职位查询最低工资
select min(salary)
from emp
group by role;
9.having分组条件设置,过滤group by中的数据
相当于平时的where,只不过在group by 查询中,where 需要换成having,
eg:查询每个职位平均成绩大于1000 的最低成绩和平均成绩,按升序排列
select min(salary) ,avg(salary)
from emp
group by role
having avg(salary)>1000
order by avg(salary) desc;
二:mysql的执行顺序
from -> where-> group by-> having->select->order by->limit
三:mysql的语法顺序
select -> from ->where -> group by -> having ->order by
-> limit
注意:
(1)
order by:排序方式,默认升序,或者指定排序
eg :…order by math asc;
group up:聚合函数
将某些数据分为一组,放在一起
(2)
having 和 group by都可以单独使用,having和where类似
having和where区别:
a.having可以使用别名,where不可以
b.where可以对select中未指定的列进行筛选,having不行
eg:select name from student where id<2;
(3)
where不能使用别名,因为where执行顺序在select 之前
order by 可以使用别名,order by 执行顺序在select之后
having 中也可以使用别名
为什么在group by 和having 能使用别名?
mysql为了方便使用,在5.7.5版本之后都可以使用,之前的的版本不可以
起别名:
eg:select (math+Chinese)total from score;
(其中total为math+chinese别名)
报错:
select (math+Chinese)total from score where total>100;
正确:
select (math+Chinese)total from score order by total>100;
正确:
select (math+Chinese)total from score having total>100;