集合运算-表的加减法和join等

本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql

表的加法

从抽象的角度看问题,我们可以将数据库中不同的表看作一个个集合,针对行列,我们可以进行不同程度的计算得出需要的结果,那表和表之间可以进行计算吗?答案自然是可以的,就好像数学中的集合,表和表之间也存在着交并差的计算方式。
常见的sql中,将两个表用union all拼接起来,就会出现一份两个表的并集,而如果只写union,也可以达到拼接的效果,只是数据呈现的结果会在拼接的基础上进行一次针对行的全局去重,这也是表和表的加法。
在这里插入图片描述

表的连接

除了针对行的处理,那想将表的列和表的列拼接的加法呢?
这种加法就是sql中的join,是集合和集合的连接,类似excel中vlookup,大部分时候,join都是通过on后面加连接条件进行连接,又因为连接时对数据的筛选不同,分为内连接和外连接;如果是内连接,两表符合条件的数据才可以拼接出现结果;而外连接,又细分为左外连接,右外连接和全外连接,左外连接会保留左表全部数据,右表符合条件的数据出现,不符合的显示null,右外相反,而全外除了能够关连接上的数据,还会保存左右无法关联的数据,无数据的地方显示null。

差集和并集

除了上面这些情况,连接还有两种特殊情况,一种是自然连接,他说内连接的特例,会自动按照两个表都包含的列进行等值内连接;一种则是交叉连接,也是常说的笛卡尔积,如果a表有n条数据,b表有m条数据,那交叉连接会出现m*n条数据。
聊完加法,聊一下减法,表的计算中可以使用except来实现对差集的效果,只不过部分sql不支持这种语法,我们可以用join来达到相似的效果,而在except 后面加all也可以实现去重的效果;使用INTERSECT则可以实现交集的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微-程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值