oracle——SET运算符

本文通过实战案例详细介绍了如何使用SQL中的union、union all、intersect和minus等集合操作符来处理多表数据,包括创建表、选择特定条件的数据,并对结果进行排序等关键步骤。

在这里插入图片描述
在这里插入图片描述


create table employees01  --创建表1
as 
select * from employees
where department_id in (70,80)

select * from employees01

create table employees02  --创建表2
as 
select * from employees
where department_id in (80,90)

select * from employees02

select * from employees where department_id = 80  --查看公共部分

--union 并集,不包括重复
--注意:select 列表的列名的表达式在数量上和数据类型要一致,如果不对应,要进行匹配
select employee_id from employees01
union
select employee_id from employees02

--union all 并集,包括重复
select employee_id from employees01
union all
select employee_id from employees02

--可以起别名,但是以上面的表为基础显示
select employee_id emp_id from employees01 --注意别名
union all
select employee_id from employees02


--intersect交集
select employee_id emp_id from employees01
intersect
select employee_id from employees02

select employee_id, department_id from employees01
intersect
select employee_id, department_id from employees02
order by 1 desc     --以第一列排序

--minus差集,集合A-B
select employee_id emp_id from employees01
minus
select employee_id from employees02

--匹配select举例
select employee_id,department_id,to_char(null)
from employees01
union
select to_number(null),department_id,department_name
from departments


--举例
--I want
--study at
--www.atguigu.com
select 'sdudy at' as "my dream",2
from dual
union
select 'I want to',1
from dual
union
select 'atguigu.com' as "my dream",3
from dual
order by 2           --按第2列排序

--练习

--1.	查询部门的部门号,其中不包括job_id是”ST_CLERK”的部门号
--方式一:子查询
select department_id
from departments
where department_id not in(
      select distinct department_id
      from employees
      where job_id = 'ST_CLERK'
)

--方式二:minus
select department_id
  from departments
minus
select distinct department_id
  from employees
 where job_id = 'ST_CLERK'
 
--2.	查询10,50,20号部门的job_id,department_id并且department_id按10,50,20的顺序排列 
select job_id,department_id,1
from employees
where department_id = 10
union
select job_id,department_id,2
from employees
where department_id = 50
union
select job_id,department_id,3
from employees
where department_id = 20
order by 3

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值