一、聚合查询
聚合函数
常见的聚合函数:
count():返回查询到的数据的数量,(查询到多少行)
sum():返回查询到的数据的总和,不是数字没有意义
avg():返回查询到的数据的平均值,不是数字没有意义
max():返回查询到的数据的最大值,不是数字没有意义
min():返回查询到的数据的最小值,不是数字没有意义
也可以先用where过滤,再进行聚合查询。
grop by子句
grop by子句可以进行分组
having
grop by中中也可以结合一些条件对数据进行进一步的筛选,不是使用where,而是having。
select role,avg(salary) from employee group by role having avg(salary) >2000;
having是针对group by之后的结果进行筛选,where是针对原始表中的每条记录都进行筛选。
二、联合查询
多表查询的过程,先计算笛卡尔积。在基于一些条件针对笛卡尔积中的记录进行筛选,如果针对两个比较大的表进行联合查询,笛卡尔积的计算开销会很大,最终的查找效率也就较低。所以不应该在生产环境上对大表进行联合查询。
内连接
组合两个表中的记录,返回两个表的交集
select 字段 from 表1 别名1 inner join 表2 别名2 on 连接条件;
外连接
**左连接:**两个表中左表的记录会全部显示出来,右表中只会显示和左表的交集记录,右表中没有的地方均为null
select 字段 from 表1 别名1 left join 表2 别名2 on 连接条件;
**右连接:**两个表中右表的记录会全部显示出来,而左表只会显示和右表有交集的记录,左表中没有的地方均为null。
select 字段from 表1 别名1 right join 表2 别名2 on 连接条件;