sql——常见sql连接模式

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 先去去重在查询

思考题


提示:外连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值