高级查询
2019-02-26 本文已影响18人
想吃热干面了
分组函数
1 MIN :最小值
2 MAX :最大值
3 SUM : 求和
4 AVG : 平均值 保留小数点后四位 默认int类型
5 COUNT : 计算
使用方法:
![](https://img.haomeiwen.com/i15391511/cc2cb245b60d05c3.png)
MIN和MAX函数:返回每组的最小或最大值
可用于任何数据类型
![](https://img.haomeiwen.com/i15391511/e85c3f4a87622057.png)
应用:
![](https://img.haomeiwen.com/i15391511/1d75d2fec8b4f19f.png)
SUM和AVG函数:返回每组的总和或平均值
只对数值类型的列或表达式操作
![](https://img.haomeiwen.com/i15391511/777e36eed9dc4969.png)
应用:
![](https://img.haomeiwen.com/i15391511/6463a30216e50c53.png)
COUNT函数:查询每组记录条数
![](https://img.haomeiwen.com/i15391511/d45b960f3066dfcc.png)
消除空值:
![](https://img.haomeiwen.com/i15391511/2fff074e5490d0d0.png)
分组函数中空值的处理
出了count(*)外,其他分组函数都会忽略列中的空值
在分组函数中使用IS NULL函数
IS NULL函数:可以使分组函数强制包含含有空值的记录
创建数据组
使用GROUP BY 子句创建数据组:
![](https://img.haomeiwen.com/i15391511/27d4ea1da3790c01.png)
![](https://img.haomeiwen.com/i15391511/ce7fd6abb8f1ad3d.png)
注意:查询的列 和 分组根据的列可不一致
排除组结果(为分组添加限制条件)
注意:不能用where子句限制组,限制组要用过having子句
![](https://img.haomeiwen.com/i15391511/46ba835447b5711b.png)
例:
![](https://img.haomeiwen.com/i15391511/c061261f7dfc3685.png)
![](https://img.haomeiwen.com/i15391511/db6edf10f1d6a67a.png)
SELECT 语句执行过程
1.from子句找到需要查询的表
2.where子句进行非分组函数筛选判断
3.group by 子句完成分组操作
4.having 子句完成分组函数筛选判断
5.select子句选择显示的列或表达式及组函数
6.order by子句排序
子查询
子查询:一个查询语句的结果作为另一个查询语句的条件(内部查询)
子查询可以嵌于以下sql子句中:
where子句 having子句 from子句
例:
![](https://img.haomeiwen.com/i15391511/47558ded72f9d96a.png)
使用指导:
1.要用括号括起来
2.要放在比较运算符右边
3.单行子查询使用单行运算符
4.多行子查询使用多行运算符
类型:
1.单行子查询
2.多行子查询
3.多列子查询
单行子查询:子查询只返回一行一列
使用单行运算符:
![](https://img.haomeiwen.com/i15391511/9695f349e55627b7.png)
多行子查询:子查询返回记录的条数,可以使一条或多条
多行运算符:IN ANY ALL
IN:判断是否与子查询中的任意一个返回值相同
![](https://img.haomeiwen.com/i15391511/adf6164d8290fbd3.png)
ANY:比较有一个满足条件即可
<ANY:小于子查询中任意一个就可以
.>ANY:大于子查询中任意一个就可以
=ANY:相当于IN
例:
![](https://img.haomeiwen.com/i15391511/30126cd59f581a9d.png)
ALL:每一行都要满足条件
<ALL:小于所有行
.>ALL:大于所有行
=ALL:无意义
例
![](https://img.haomeiwen.com/i15391511/20ded9a700d4dcdf.png)
子查询中的空值
![](https://img.haomeiwen.com/i15391511/7d1db9f87c24093a.png)
FROM子句中的子查询
查询获取的数据可以看作是一个新的表,要设置别名
![](https://img.haomeiwen.com/i15391511/45edecb691e078d8.png)