SQL学习之“集合运算”

您所在的位置:网站首页 sql集合运算算不算单条sql语句 SQL学习之“集合运算”

SQL学习之“集合运算”

2023-09-13 03:26| 来源: 网络整理| 查看: 265

本篇文章记录学习SQL集合运算的过程与心得。

对于集合这个概念,印象最深的就是数学课里学的,简单的说就是把研究对象当做元素,则一些元素组成的整体就叫集合。

而在数据库领域,则表示记录的集合,具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。像UNION,INTERSECT, EXCEPT这种用来进行集合运算的运算符称为集合运算符。在数据库中, 所有的表--以及查询结果--都可以视为集合。

1、表的加减法

UNION就是相当于2个表的并集,但是 UNION 等集合运算符通常都会除去重复的记录。若想包含重复行,使用集合运算 UNION ALL方法即可。

使用 UNION 对两个查询结果取并集, 和在一个查询中使用 WHERE 子句, 然后使用 OR 谓词连接两个查询条件, 能够得到相同的结果。

示例:

找出毛利率不足 30%或毛利率未知的商品的语句如下所示。

 

通常来说, 我们会把类型完全一致, 并且代表相同属性的列使用 UNION 合并到一起显示, 但有时候, 即使数据类型不完全相同, 也会通过隐式类型转换来将两个类型不同的列放在一列里显示, 例如字符串和数值类型。

集合的交, 就是两个集合的公共部分, 由于集合元素的互异性, 集合的交只需通过文氏图就可以很直观地看到它的意义。

 但是MySQL 目前不支持INTERSECT操作,可以用INNER JOIN来代替。

集合的差集

求集合差集的减法运算和实数的减法运算有些不同, 当使用一个集合A减去另一个集合B的时候,对于只存在于集合B而不存在于集合A的元素, 采取直接忽略的策略,因此集合A和B做减法只是将集合A中也同时属于集合B的元素减掉。

MySQL目前也不支持表的减法运算符 EXCEPT,不过, 借助NOT IN 谓词, 同样可以实现表的减法。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3