分组函数
什么是分组函数
分组函数作用于一组数据,并对一组数据返回一个值。
组函数类型
• AVG()
• COUNT()
• MAX()
• MIN()
• SUM()
组函数语法
AVG(平均值)和 SUM (合计)函数
MIN(最小值)和 MAX(最大值)函数
可以对任意数据类型的数据使用 MIN 和 MAX 函数。
COUNT(计数)函数
1、COUNT(*) 返回表中记录总数,适用于任意数据类型。
2、COUNT(expr) 返回expr不为空的记录总数。
分组数据
GROUP BY 子句语法
1、WHERE一定放在FROM后面
2、在SELECT 列表中所有未包含在组函数中的列都应该包含 在 GROUP BY 子句中。
3、包含在 GROUP BY 子句中的列不必包含在SELECT 列表中
4、在GROUP BY子句中包含多个列
非法使用组函数
• 不能在 WHERE 子句中使用组函数。
• 可以在 HAVING 子句中使用组函数。
多表查询
笛卡尔集
笛卡尔集会在下面条件下产生:
– 省略连接条件
– 连接条件无效
– 所有表中的所有行互相连接
为了避免笛卡尔集, 可以在 WHERE 加入有 效的连接条件。
等值连接
表的别名
Join连接
分类:
– 内连接 [inner] join on
– 外连接
• 左外连接 left [outer] join on
• 右外连接 right [outer] join on
ON 子句
join连接图示
注:full join在mysql中不好使,oracle中支持。mysql可以通过left join + union + right join实现(利用union的去重机制)