Oracle SET运算符

本文深入探讨了SQL中SET操作符的应用,包括union用于获取两个查询的并集,intersect用于获取交集,以及minus用于计算差集。通过具体示例展示了如何在Oracle环境下使用这些操作符来处理复杂的数据查询需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发工具与关键技术:PLSQL Developer、Oracle、SQL*plus

一.SET操作符的主要作用就是返回两个查询结果集的并集交集差集
二.在使用SET操作符时注意:在select列表中的列名和表达式在数量数据类型上要相对应,否则运行结果如下:
在这里插入图片描述
在这里插入图片描述
三.(1)union —— 返回两个查询的结果集的并集
例:查询所有教师和同学的name(姓名)、sex(性别)和birthday(生日).
首先查询所有同学:select sname,ssex,sbirthday from student
在这里插入图片描述
接着查询所有老师:select tname,tsex,tbirthday from teacher
在这里插入图片描述
然后通过union 求以上两个查询的结果集的并集
select sname,ssex,sbirthday from student
union
select tname,tsex,tbirthday from teacher
并集执行结果:
在这里插入图片描述
(2)intersect —— 返回两个查询的结果集的交集
例:查询“计算机系”与“电子工程系”不同职称的教师的Tname(姓名)和Prof(职称)
select tname,prof
from teacher
where prof not in (select prof from teacher where depary in ‘计算机系’
intersect
select prof from teacher where depary in ‘电子工程系’ )
计算机系教师的职称:
在这里插入图片描述
电子工程系教师的职称:
在这里插入图片描述
通过intersect取交集
在这里插入图片描述
整段执行结果:
在这里插入图片描述

(3)minus —— 返回两个查询的结果集的差集
例:查询所有未讲课的教师的Tname和Depart
首先查询出所有教师:select tname,depary from teacher
在这里插入图片描述
再通过join on联表查询出所有讲过课的老师:
select distinct t.tname, t.depary
from teacher t
join course s
on s.tno=t.tno
join score r
on r.cno=s.cno
在这里插入图片描述

然后通过minus求以上两个查询的结果集的差集
注意:在minus上方查询的结果集要大于minus下方查询的结果集
select tname,depary from teacher
minus
select distinct t.tname, t.depary
from teacher t
join course s
on s.tno=t.tno
join score r
on r.cno=s.cno
差集执行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值