一、组函数(分组函数,聚合函数) Group Function
单行函数: ifnull – 每一行数据经过函数计算都会得到一行结果
组函数: 统计类型的数据,求平均值,求和,求最大最小值,计数
一组数据,经过函数计算会得到一个结果
求平均:avg()
求和:sum()
求最大值:max()
求最小值:min()
求计数:count()
二、分组句式 GROUP BY
对查询样本进行分组统计
重要!:进行分组查询时,只有在GROUP BY中出现的列,才能出现在SELECT中。
GROUP BY 列 按照列进行分组,该列中数据相同数据行自动归为1组,有多少个组就统计多少个数据。
GROUP BY可以同时使用多个列进行分组,分组效果按照多列的数据组合
三、对组函数的筛选
having 专门用于分组函数的数据筛选
DQL 的执行顺序:
– from 从表中获取数据
– where进行筛选需要的数据行
– group by 对筛选后的数据进行分组,并计算分组函数
– having 专门用于筛选分组函数的条件
– select 筛选数据列,计算算术表达式,列的别名
– order by 排序
– limit 结果分页分段
注意:在where中不能使用分组函数
四、多表关联查询的基础-- 笛卡尔积
A{X,Y,Z} B{M,N}
A*B={XM,XN,YM,YN,ZM,ZN}
SQL中,笛卡儿积使用"交叉连接"来实现
cross join
也可以直接用 join
select*
from 表a cross join 表b
select *
from 表a,表b
五、等值连接( 关联 )
一般来说都是两个具有相同的实际意义的列来进行连接
a 表 join b表 on (连接条件)
a表 join b 表 on(a.a列= b.b列) a,b列具有相同的实际意义
六、外连接
左外连接(左连接):查全左边的表
右外连接(右连接)
全连接(全连接) – mysql不支持
七、自连接
自连接方式来模拟或实现层级关系
一张表用两次
如:a 表 a1 join a表 a2 on(a1.a1列=a2.a2列)
八、集合操作
1.求查询的并集
使用union 操作,会去掉重复数据
union all 不会去重复
左右连接之后,在union