第四章 集合运算

本文详细介绍了数据库中的集合运算,包括UNION、INTERSECT、EXCEPT的使用,以及它们与OR、NOT IN等谓词的关系。通过实例展示了如何进行表的加减法,如并集、交集、差集和补集,以及在MySQL中如何实现这些操作。此外,还讨论了对称差的概念及其在查询中的应用。

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

第四章 集合运算

4.1 表的加减法

4.1.1 什么是集合运算

         在标准SQL中,我们用UNION,INTERSECT,EXCEPT来将检索结果进行并、交和差运算,像 UNION,INTERSECT,EXCEPT这种用来进行集合运算的运算符称为集合运算符。

 

下面的文氏图展示了几种集合的基本运算:

 

uploading.4e448015.gif正在上传…重新上传取消

 

 

A ∪ B : A和B的并集

A ∩ B : A和B的交集

A – B : A相对B的差集    即 A - (A ∩ B)

A⊕B :集合A、B的对称差集  即: A ∪ B 再去除A ∩ B

~A:集合A在集合B中的补集

 

 

在数据库中,所有的表以及查询结果 都可以视为集合,因此也可以把表视为 在集合上进行上述的集合运算。在很多时候,这种抽象非常有助于对复杂查询问题给出一个可行的思路。

4.1.2 表的加法 – UNION(加法 -- 就是并集 )

4.1.2.1 UNION

 

演示:

 

SELECT product_id, product_name

FROM product

UNION

SELECT product_id, product_name

FROM product2;

 

Out

 

product_id|product_name|

----------+------------+

0001      |T恤衫         |

0002      |打孔器         |

0003      |运动T恤        |

0004      |菜刀          |

0005      |高压锅         |

0006      |叉子          |

0007      |擦菜板         |

0008      |圆珠笔         |

0009      |水壶          |

0010      |手套          |

 

 

 

 

观察发现 商品编号为“0001”~“0003”的3条记录在两个表中都存在,实际情况下UNION等集合运算符通常都会 去除(DISTINCT) 重复的记录。

 

上述查询是对不同的两张表进行求 并集 运算。对于同一张表,实际上也是可以进行求并集的。

 

练习:

假设连锁店想要增加成本利润率超过50%或者售价低于800的货物的存货量,请使用 UNION 对分别满足上述两个条件的商品的查询结果求并集。

 

结果应该类似于:

 

uploading.4e448015.gif正在上传…重新上传取消

 

 

Input:

 

select product_id ,product_name,product_type ,sale_price ,purchase_price

from product

where (sale_price - purchase_price)/purchase_price  > 0.5

 

union

 

select product_id ,product_name,product_type ,sale_price ,purchase_price

from product

where sale_price < 800;

 

 

不使用 UNION 完成上述操作&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值