MySQL

高级查询

2019-02-26  本文已影响18人  想吃热干面了

分组函数

1 MIN :最小值
2 MAX :最大值
3 SUM : 求和
4 AVG : 平均值 保留小数点后四位 默认int类型
5 COUNT : 计算

使用方法:


image.png

MIN和MAX函数:返回每组的最小或最大值

可用于任何数据类型


image.png

应用:


image.png

SUM和AVG函数:返回每组的总和或平均值

只对数值类型的列或表达式操作


image.png

应用:


image.png

COUNT函数:查询每组记录条数

image.png

消除空值:


image.png
分组函数中空值的处理

出了count(*)外,其他分组函数都会忽略列中的空值

在分组函数中使用IS NULL函数

IS NULL函数:可以使分组函数强制包含含有空值的记录

创建数据组

使用GROUP BY 子句创建数据组:

image.png
image.png
注意:查询的列 和 分组根据的列可不一致

排除组结果(为分组添加限制条件)

注意:不能用where子句限制组,限制组要用过having子句


image.png

例:


image.png

SELECT 语句执行过程

1.from子句找到需要查询的表
2.where子句进行非分组函数筛选判断
3.group by 子句完成分组操作
4.having 子句完成分组函数筛选判断
5.select子句选择显示的列或表达式及组函数
6.order by子句排序

子查询

子查询:一个查询语句的结果作为另一个查询语句的条件(内部查询)
子查询可以嵌于以下sql子句中:
where子句 having子句 from子句
例:


image.png

使用指导:
1.要用括号括起来
2.要放在比较运算符右边
3.单行子查询使用单行运算符
4.多行子查询使用多行运算符
类型:
1.单行子查询
2.多行子查询
3.多列子查询

单行子查询:子查询只返回一行一列

使用单行运算符:


image.png

多行子查询:子查询返回记录的条数,可以使一条或多条

多行运算符:IN ANY ALL

IN:判断是否与子查询中的任意一个返回值相同
image.png
ANY:比较有一个满足条件即可

<ANY:小于子查询中任意一个就可以
.>ANY:大于子查询中任意一个就可以
=ANY:相当于IN
例:


image.png
ALL:每一行都要满足条件

<ALL:小于所有行
.>ALL:大于所有行
=ALL:无意义


子查询中的空值

image.png

FROM子句中的子查询

查询获取的数据可以看作是一个新的表,要设置别名


image.png
上一篇 下一篇

猜你喜欢

热点阅读