文章目录
1、叠加行集(Union &Union all)
UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复 union 是取唯一值,记录没有重复
2、查找只存在于一张表的数据(not in)
如过DEPTNO不是主键,需要使用distinct
注意:如果not in后面的选项存在null 则查不出来
in没有这个问题。
这是因为无论是in还是not in 本质上都是or查询
deptno not in(10,50,null)
等价于
not (deptno=10 or deptno=50 or deptno=null)
3、从一个表检索另一个表不相关的行
select d.*
from dept d left join emp e on d.deptno=e.deptno
where e.deptno is null
4、确定两个表是否有相同的数据
先找出存在于表1 但是不存在于表2的数据
再找出存在于表2但是不存在于表1的数据
将两个结果合并
如果两个表的数据都相同,那么合并结果为空。
coalesce()解释:返回参数中的第一个非空表达式(从左向右依次类推);
5、从多个表中返回缺失值(全外连接)
full join
6、连接和聚合函数的使用
//计算每个工资的总额和奖金总额
注意:distinct 先去去重在查询
思考题
提示:外连接