用SQL进行集合运算

一、集合运算的几个注意事项

(1)sql能够操作具有重复行的集合,可以采用all来实现。
一般的集合论是不允许集合里存在重复元素的,因此集合{1, 1, 2, 3, 3,3}和集合{1, 2, 3}被视为相同的集合。但是关系数据库里的表允许存在重复的行,称为多重集合。
在sql中,提供了允许重复和不允许重复两种用法
如果直接使用union和intersect,则结果中不会出现重复值,如果加上all,可在结果里留下重复值。

select 列名 from 表1
UNION
select 列名 from 表2
select 列名 from 表1
INTERSECT
select 列名 from 表2

(2)集合运算符有优先级
INTERSECT的优先级大于UNION和EXCEPT
EXCEPT 取两个查询结果的差集
INTERSECT返回两个结果集的交集
UNION返回两个结果集的并集
UNION和INTERSECT都具有幂等性这一重要性质,而EXCEPT不具有幂等性。

二、比较表和表:检查集合相等性

在集合论里,判定两个集合是否相等时,一般使用下面两种方法。
1.(A包含B )且(A包含B) ⇔ (A = B)
2.(A ∪ B ) = (A ∩ B) ⇔ (A = B)
在这里插入图片描述

三、用差集实现关系除法运算

从表EmpSkills中找出精通表Skills中所有技术的员工。
在这里插入图片描述
有点没懂怎么实现的。。。

四、用于删除重复行的高效SQL

在这里插入图片描述可以采用except求补集
在这里插入图片描述通过not in 求补集
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值