mysql中的高级查询

本文详细介绍了MySQL中的聚合查询,包括count、sum、avg、max、min等函数的用法,以及ifnull函数的作用。同时,解释了groupby和having在分组查询中的应用,以及它们与where的区别。还阐述了MySQL查询的执行顺序,并举例说明了orderby和limit的使用。通过对这些概念的理解,有助于提升SQL查询效率。
摘要由CSDN通过智能技术生成

一:聚合查询

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值