集合查询-并(UNION)集运算、交(INTERSECT)集运算、差(EXCEPT)集运算

一、概述

集合查询是对两个SELECT语句的查询结果进行再进行处理的查询

二、条件

1、两个SELECT语句的查询结果必须是属性列数目相同

2、两个SELECT语句的查询结果必须是对应位置上的属性列必须是相同的数据类型

三、并(UNION)运算

1、语法格式:

SELECT 语句1

UNION 【ALL】

SELECT 语句2

2、结果

两个SELECT语句并运算的结果就是两个查询结果中的元组,使用并运算进行集合查询在查询结果中会自动去除重复的元组,如果加上ALL关键词之后则会显示重复的元组

3、举例:查询选修了课程号为"001"或"002"的学生学号。

sql 复制代码
select sNo from sC where cNo='001'
union
select sNo from sC where cNo='002';

也可以使用一个SELECT语句来实现查询需求,但注意要用DISTINCE关键词去重

sql 复制代码
select distinct sNo
from sC
where cNo='001' or cNo='002'

四、交(INTERSECT)运算

1、语法格式:

SELECT 语句1

INTERSECT

SELECT 语句2

2、结果:

两个SELECT语句的查询结果进行交运算的结果是在两个SELECT语句中同时存在的元组的集合

3、举例:查询既选修了"001"课程又选修了"002"课程的学生学号

sql 复制代码
select sNo from sC where cNo='001' 
intersect
select sNo from sC where cNo='002';

4、使用单个的SELECT语句也可以满足查询需求

sql 复制代码
select sNo
from sC
where cNo='001' and sNo in(
select sNo
from sC
where cNo='002'
)

错误示例:

select sNo
from sC
where cNo='001' and cNo='002'

错因:一个元组在同一时刻同一属性只能为1个值,因此WHERE子句的运算结果始终为假

五、差(EXCEPT)运算

1、语法格式:

SELECT 语句1

EXCEPT

SELECT 语句2

2、结果:

两个SELECT语句的结果集进行差运算的结果是从第一个SELECT语句的结果集中去除第二个SELECT语句的结果集中存在的元组之后所形成的新的元组集

3、举例:查询选修了课程号为"001"但没选修"002"课程的学生学号

sql 复制代码
select sNo from sC where cNo='001'
except
select sNo from sC where cNo='002'; 

也可以使用一个SELECT语句来实现查询需求

sql 复制代码
select sNo
from sC
where cNo='001' and sNo not in(
select sNo
from sC
where cNo='002'
)

六、总结

1、集合查询体现了SQL语言对关系的操作能力

2、集合查询方式语义清晰,容易理解

3、不同的DBMS对集合查询的支持程度不同,语义动词可能会不一样,比如有的DBMS进行差集运算的语义动词是MINUS

相关推荐
MAGICIAN...4 小时前
【Redis】--持久化机制
数据库·redis·缓存
我真的是大笨蛋4 小时前
JVM调优总结
java·jvm·数据库·redis·缓存·性能优化·系统架构
步步为营DotNet6 小时前
5-2EFCore性能优化
数据库·性能优化·.net
2501_920047037 小时前
Redis-集群
数据库·redis·bootstrap
半夏陌离7 小时前
SQL 拓展指南:不同数据库差异对比(MySQL/Oracle/SQL Server 基础区别)
大数据·数据库·sql·mysql·oracle·数据库架构
旋转的油纸伞7 小时前
SQL表一共有几种写入方式
数据库·sql
半夏陌离7 小时前
SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
java·前端·数据库
isyoungboy7 小时前
SQL高效处理海量GPS轨迹数据:人员gps轨迹数据抽稀实战指南
数据库·sql
敬业小码哥8 小时前
记一次:mysql的json及json数组使用组合使用
数据库·mysql·json
练小杰9 小时前
【Mysql-installer-community-8.0.26.0】Mysql 社区版(8.0.26.0) 在Window 系统的默认安装配置
数据库·sql·mysql·adb·配置文件·mysql安装·关系型数据库