SQL-集合运算

本文详细介绍了SQL中的集合运算,包括UNION用于表的加法,去除重复记录;INTERSECT用于获取两个表的交集;以及EXCEPT进行记录的减法,找出两个表的差集。注意集合运算的条件:列数和类型要一致,ORDER BY只能在最后使用。文章适合SQL初学者,帮助理解表间操作。

🎈写在前文

  • 💖 作者简介:大家好,我是小王🙋‍♂️
  • 📝 个人主页:你隔壁的小王🔥
  • 🎉 欢迎点赞👍+收藏⭐️+留言📝
  • 📣专栏:SQL🙋‍♂️

🙋‍♂️ 小伙伴们如果在学习过程中有不明白的地方,欢迎评论区留言提问!希望能和大家一起进步,共同成长!

目录

🎈写在前文

表的加减法

什么是集合运算

表的加法—— UNION

集合运算的注意事项

选取表中公共部分—— INTERSECT

记录的减法—— EXCEPT


表的加减法

  • 什么是集合运算

    • 集合在数学领域表示“(各种各样的)事物的总和”,在数据库领域表示记录的集合。
  • 表的加法—— UNION

  • 表1
  • 表2

  •  可以看到表1的004、5、7、8在表2中是不存在的,同时在表2中的9、10在表1中也是不存在的

    SELECT product_id, product_name
    FROM Product
    UNION
    SELECT product_id, product_name
    FROM Product2;

     

    可以看到union是求出了并集,并且自动去重了,集合运算符会除去重复的记录。

     如果我们想要保留重复行只需要在集合运算符后加上ALL即可

     可以看到此时重复行都已经保存下来了

  • 集合运算的注意事项

    • 作为运算对象的记录的列数必须相同
    • 作为运算对象的记录中列的类型必须一致
    • 可以使用任何 SELECT 语句,但 ORDER BY 子句只能在最后使用一次
  • 选取表中公共部分—— INTERSECT

    • 选取两个记录集合中公共部分的 INTERSECT (交集)
    • SELECT product_id, product_name
      FROM Product
      INTERSECT
      SELECT product_id, product_name
      FROM Product2
      ORDER BY product_id;

       

       可以看到INSTERSECT是求两个记录的交集(PS:MYSQL中无法使用INSTERSECT)

记录的减法—— EXCEPT

  • 减法运算的 EXCEPT (差集)(PS:只有Oracle不使用 EXCEPT ,而
    是使用其特有的 MINUS 运算符。使用Oracle的用户,请用 MINUS
    代替 EXCEPT 。此外,MySQL还不支持 EXCEPT ,因此也无法使用。
    )
  • SELECT product_id, product_name
    FROM Product
    EXCEPT
    SELECT product_id, product_name
    FROM Product2
    ORDER BY product_id;
     

 

 

 

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你隔壁的小王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值