表的加减法
集合在数据库领域表示记录的集合。具体来说,表、 视图和查询的执行结果都是记录的集合。
集合运算:对满足同一规则的记录进行四则运算
注意事项:
1、作为运算对象的记录的列数必须相同
2、作为运算对象的记录中列的类型必须一致
- 在有些 DBMS中,即使数据类型不同,也可以通过隐式类型转换完成操作。但由于并非所有的 DBMS都支持这样的用法, 因此希望使用恰当的数据类型来进行运算。
- 一定要使用不同数据类型的列时,可以使用 6-1 节中的类型转换函数 CAST
3、可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次
4、集合运算符会除去重复的记录,如果希望集合运算符保留重复行,就需要使用ALL选项
集合运算符
1、UNION(并集):表的加法
2、INTERSECT(交集):选取两个记录集合中公共部分,MySQL尚不支持INTERSECT,无法使用。
- AND: 可以选取出一张表中满足多个条件的公共部分不同
- INTERSECT :应用于两张表,选取出它们当中的公共记录
3、EXCEPT(差集):进行减法运算,MySQL还不支持EXCEPT,因此也无法使用
4、CROSS JOIN:乘法
4、关系除法:集合运算中的除法
从 EmpSkills 表中选取出掌握了 Skills 表中所有3个领域的技术的员工
-- 选取出掌握所有3个领域的技术的员工
SELECT DISTINCT emp
FROM EmpSkills ES1
WHERE NOT EXISTS
(SELECT skill
FROM Skills
EXCEPT
SELECT skill
FROM EmpSkills ES2
WHERE EP1.emp = ES2.emp);
除法和乘法是相辅相成的关系,除法运算的结果(商)乘以除数就能得到除法运算前的被除数了。例如对于 20÷4 = 5 来说,就是 5( 商 )×4( 除数 ) = 20( 被 除数 )。
关系除法中这样的规则也是成立的。通过商和除数相乘,也就是交叉联结, 就能够得到作为被除数的集合。