分组函数作用于一组数据,并对一组数据返回一个值。
组函数类型:
AVG
COUNT
MAX
MIN
SUM
AVG(平均值)和 SUM (合计)函数:
可以对数值型数据使用AVG 和 SUM 函数。
MIN(最小值) 和 MAX(最大值)函数:
可以对任意数据类型的数据使用 MIN 和 MAX 函数。
COUNT(计数)函数:
① COUNT(*) 返回表中记录总数
② COUNT(expr) 返回 expr不为空的记录总数
DISTINCT 关键字:
COUNT(DISTINCT expr) 返回 expr非空且不重复的记录总数。
组函数与空值:
① 组函数忽略空值
② NVL函数使分组函数无法忽略空值
分组数据: GROUP BY 子句语法
① 可以使用GROUP BY子句将表中的数据分成若干组
② 在SELECT 列表中所有未包含在组函数中的列都应该包含在GROUP BY子句中
③ 包含在 GROUP BY 子句中的列不必包含在SELECT 列表中
④ 所有包含于SELECT 列表中,而未包含于组函数中的列都必须包含于 GROUP BY 子句中
非法使用组函数:
① 不能在 WHERE 子句中使用组函数
② 可以在HAVING 子句中使用组函数
过滤分组: HAVING 子句
① 行已经被分组
② 使用了组函数
③ 满足HAVING 子句中条件的分组将被显示
笛卡尔集:
1) 笛卡尔集会在下面条件下产生:
① 省略连接条件
② 连接条件无效
③ 所有表中的所有行互相连接
2)笛卡尔集的大小是组成它的各个子集的乘积
3)为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件
连接类型:
1)Oracle 连接
① 在WHERE 字句中写入连接条件
② 在表中有相同列时,在列名之前加上表名前缀
2)等值连接
3)适用于SQL: 1999的连接
区分重复的列名:
① 使用表名前缀在多个表中区分相同的列
② 使用表名可以提高效率
③ 在不同表中具有相同列名的列可以用别名加以区分
表的别名:
① 使用别名可以简化查询
② 使用表名前缀可以提高执行效率
外连接语法:
① 使用外连接可以查询不满足连接条件的数据
② 外连接的符号是 (+)
③ 没有(+)的一侧将显示全部记录,有(+)的一侧显示匹配的记录
叉集:
① 使用CROSS JOIN 子句使连接的表产生叉集
② 叉集和笛卡尔集是相同的
自然连接:
① NATURAL JOIN 子句,会以两个表中具有相同名字的列为条件创建等值连接
② 在表中查询满足等值条件的数据
使用 USING 子句创建连接:
① 使用 USING 可以在有多个列满足条件时进行选择
② 不要给选中的列中加上表名前缀或别名
内连接:
在SQL: 1999中,内连接只返回满足连接条件的数据