SQL系统学习笔记之集合运算

本文详细介绍了数据库中的集合运算,包括UNION、UNION ALL、INTERSECT和EXCEPT,强调了操作时的注意事项。同时,讨论了内联结和外联结的概念,特别是LEFT和RIGHT OUTER JOIN在获取数据时的不同。通过实例展示了如何使用这些运算来处理不同表之间的数据关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合运算

定义:集合在数学领域表示“(各种各样的)事物的总和”,在数据库领域表示记录的集合。具体来说,表、视图和查询的执行结果都是记录的集合。
分为两种:一种是表之间的行集合运算(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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值