一、集合运算的几个注意事项
(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 求补集