锐安盾-网站安全加速服务

中国站

联系我们

400-002-9968

售前咨询

售后服务

注册 登录

博客 > SQL知识:SQL集合类型及示例详解

SQL知识:SQL集合类型及示例详解

  • 标签:
  • SQL
  • SQL集合
  • SQL集合类型
  • SQL集合示例

浏览量:591次评论:0次

作者:锐成网络整理时间:2024-05-27 17:04:31

在数据库管理系统中,SQL是一种用于管理和操作数据的编程语言。它提供了一种结构化查询语言,用于创建、修改和管理数据库中的表和数据。其中,SQL中的表就代表着事实集合,而其中的查询就是在集合的基础上生成的结果集。那么什么是集合?SQL集合类型有哪些呢?本文将深入探讨SQL集合定义、SQL集合类型及示例

一、集合的定义

集合是由一个和多个元素构成的整体,在SQL中的表就代表着事实集合,而其中的查询就是在集合的基础上生成的结果集。SQL的集合包括交集(INTERSECT),并集(UNION),差集(EXCEPT)。

SQL知识:SQL集合类型及示例详解

二、交集INTERSECT

可以对两个或多个结果集进行连接,形成“交集”。返回左边结果集和右边结果集中都有的记录,且结果不重复(这也是集合的主要特性)

交集限制条件

  • 子结果集要具有相同的结构。
  • 子结果集的列数必须相同
  • 子结果集对应的数据类型必须可以兼容。
  • 每个子结果集不能包含order by 和 compute子句。

交集示例

我们用以下两个表中的数据作为示例

取以上两个表的交集,我们可以这样写SQL

SELECT * FROM  City1
INTERSECT
SELECT * FROM  City2

结果如下:

其中北京和上海是上面两个表共有的结果集。

这和我们的内连接(INNER JOIN)有点类似,以上SQL也可以这样写

SELECT c1.* FROM City1 c1
INNER JOIN City2 c2
ON c1.Cno=c2.Cno AND c1.Name=c2.Name

结果与上面结果相同。

三、并集UNION

可以对两个或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集。其中使用UNION可以得到不重复(去重)的结果集,使用UNION ALL可能会得到重复(不去重)的结果集。

并集限制条件

  • 子结果集要具有相同的结构。
  • 子结果集的列数必须相同。
  • 子结果集对应的数据类型必须可以兼容。
  • 每个子结果集不能包含order by 和 compute子句。

UNION示例

还是以上面的City1和City2为例,取两个表的并集,我们可以这样写SQL:

SELECT * FROM  City1
UNION 
SELECT * FROM  City2

结果如下:

我们看到,北京和上海去掉了重复的记录,只保留了一次

UNION ALL示例

我们再看看使用UNION ALL会怎么样?

SELECT * FROM  City1
UNION ALL
SELECT * FROM  City2

结果如下:

与上面的UNION相比,UNION ALL仅仅是对两个表作了拼接而已,北京和上海依然在下面重复出现了,而且细心的读着应该发现了,UNION还会对结果进行排序,而UNION ALL不会。

四、差集EXCEPT

可以对两个或多个结果集进行连接,形成“差集”。返回左边结果集合中已经有的记录,而右边结果集中没有的记录。

差集限制条件

  • 子结果集要具有相同的结构。
  • 子结果集的列数必须相同
  • 子结果集对应的数据类型必须可以兼容。
  • 每个子结果集不能包含order by 和 compute子句。

差集示例

以City1和City2为例,我们想取City1(左表)和City2(右表)的差集,可以这样写SQL:

SELECT * FROM  City1
EXCEPT
SELECT * FROM  City2

结果如下:

我们看到,因为北京和上海在两个表都存在,差集为了只显示左表中有的,而右表中没有的,就把这两个给过滤掉了。

在本文中,我们详细介绍了SQL集合的类型,通过示例,我们展示了如何使用这些类型来存储和处理数据。这些集合类型在SQL中扮演了重要的角色,对于开发者来说是必不可少的。希望本文对你理解和应用SQL集合有所帮助。

重要声明:本文来自SQL数据库开发,经授权转载,版权归原作者所有,不代表锐成观点,转载的目的在于传递更多知识和信息。

我的评论

还未登录?点击登录

微信扫码沟通
微信扫码沟通

微信扫码沟通

售前咨询
合作
售后
return head