集合查询-并(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

相关推荐
captain3762 小时前
MyBatis(入门5)其他查询操作
java·数据库·spring boot·mybatis
小此方3 小时前
Re:Mysql数据库基础篇(八):详细讲解复合查询、多表查询、自连接、多行、多列子查询与合并查询
数据库·mysql
xszivvvv3 小时前
Mariadb数据库frm文件异常,如何恢复数据
数据库·mariadb
smile_life_3 小时前
MySQL 设置 防止账户被暴力破解
数据库·mysql
ShineWinsu3 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
测试盐4 小时前
oracle数据库卡顿排查
数据库·oracle
滕州市燕猫虎计算机科技工作室个体工商户4 小时前
MySQL、MVCC、多版本并发控制
数据库·mysql·mvcc·数据库事务
明航咨询-陈老师4 小时前
ITSS运行维护服务能力成熟度认证技术纵深:标准模型、等级路径、2026审核趋势与CS/CMMI对比
服务器·数据库·cmmi
缓慢更新5 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
AI小百科5 小时前
向量数据库:AI 的「记忆仓库」是怎么工作的
数据库·人工智能·oracle