集合运算
定义:集合在数学领域表示“(各种各样的)事物的总和”,在数据库领域表示记录的集合。具体来说,表、视图和查询的执行结果都是记录的集合。
分为两种:一种是表之间的行集合运算(UNION、INTERSECT 等);另一种是表之间的列为单位的运算;
行为单位的集合
注意事项:1、作为运算对象的记录的列数必须相同;2、作为运算对象的记录中列的类型必须一致;3、可以使用任何 SELECT 语句,但 ORDER BY 子句只能在最后使用一次
UNION 并集运算
会对交集的部分进行去重展示
SELECT product_id, product_name
FROM Product
UNION
SELECT product_id, product_name
FROM Product2;
ORDER BY product_id; -- 最后使用
ALL 并集运算(对交集部分不去重)
SELECT product_id, product_name
FROM Product
UNION ALL
SELECT product_id, product_name
FROM Product2;
ORDER BY product_id; -- 最后使用
INTERSECT 取到交集部分
SELECT product_id, product_name
FROM Product
INTERSECT -- INTERSECT ALL 希望保留重复行时同样需要使用
SELECT product_id, product_name
FROM Product2
ORDER BY product_id;
EXCEPT 记录的减法(差集)
剔除交集部分的记录
列为单位的集合(联结)
内联结
关键字:INNER JOIN
内联结只能选取出同时存在于两张表中的数据
SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name,
P.sale_price
FROM ShopProduct AS SP INNER JOIN Product AS P
ON SP.product_id = P.product_id;
外联结
结果中包含原表中不存在(在原表之外)的信息
外联结还有一点非常重要,那就是要把哪张表作为主表。最终的结果中会包含主表内所有的数据。指定主表的关键字是 LEFT 和 RIGHT。顾名思义,使用 LEFT 时 FROM 子句中写在左侧的表是主表,使用 RIGHT 时右侧的表是主表。
SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name,
P.sale_price
FROM ShopProduct AS SP RIGHT OUTER JOIN Product AS P -- 右侧的是主表
ON SP.product_id = P.product_id;
数据库操作:集合运算与联结详解
本文详细介绍了数据库中的集合运算,包括UNION、UNION ALL、INTERSECT和EXCEPT,强调了操作时的注意事项。同时,讨论了内联结和外联结的概念,特别是LEFT和RIGHT OUTER JOIN在获取数据时的不同。通过实例展示了如何使用这些运算来处理不同表之间的数据关系。
1216

被折叠的 条评论
为什么被折叠?



