集合的定义
集合是由一个或多个元素构成的整体,在 SQLServer 中的表就代表着事实集合,而其中的查询就是在集合的基础上生成的结果集。SQL Server 的集合包括交集(INTERSECT)、并集(UNION)、差集(EXCEPT)。
交集(INTERSECT)
可以对两个多个结果集进行连接,形成 ” 交集 ”。返回左边结果集和右边结果集中都有的记录,且结果不重复(这也是集合的主要特性)
交集限制条件
子结果集要有相同的结构。子结果集的列数必须相同。子结果集对应的数据类型必须可以兼容。每个子结果集不能包含 order by 和 compute 子句。
交集语法
select * from 结果集
intersect
select * from 结果集
交集示例
select name from [testss].[dbo].[schema_table1]
intersect
select name from [testss].[dbo].[test1]
并集(UNION and UNION ALL)
可以对两个或多个结果集进行连接,形成并集。子结果集所有的记录组合在一起形成新的结果集,其中使用 UNION 可以得到不重复(去重复)的结果集,使用 UNION ALL 会得到重复(不去重的结果集)。
并集限制条件
子结果集要具有相同的结构。子结果集的列数必须相同。子结果集对应的数据类型必须可以兼容。每个子结果集不能包含 order by 和 compute 子句
并集(UNION) 语法
select * from 结果集
union
select * from 结果集
并集(UNION) 示例
select name from [testss].[dbo].[schema_table1]
union
select name from [testss].[dbo].[test1]
并集(UNION ALL) 语法
select * from 结果集
union all
select * from 结果集
并集(UNION ALL) 示例
select name from [testss].[dbo].[schema_table1]
union all
select name from [testss].[dbo].[test1]
差集(EXCEPT)
可以对两个或多个结果集进行连接,形成差集。返回左边结果集中已经有的记录,而右边结果集中没有的记录。
差集限制条件
子结果集要具有相同的结构。子结果集的列数必须相同。子结果集对应的数据类型必须可以兼容。每个子结果集不能包含 Order by 和 compute 子句。
差集(EXCEPT)语法
select * from 结果集
except
select * from 结果集
差集(EXCEPT)示例
select name from [testss].[dbo].[schema_table1]
except
select name from [testss].[dbo].[test1]
提示
集合是我们数据处理过程中的理论基础,可以通过集合的观点去很好的理解不同的查询语句。每一个物理表就是一个集合,当我们要对表进行操作的时候,将它们看成对集合的操作就很好理解了。