oracle 集合运算--交集、并集、补集、差集

本文详细介绍了SQL中的集合运算,包括交集、并集和补集等基本概念,并通过实例展示了如何利用这些运算来解决实际问题,例如求取没有员工的部门、合并不同条件下的查询结果等。

集合运算就是将多个结果集组合成一个结果集,其包括:

  INTERSECT (交集),返回两个查询共有的记录。【A∩B 只取A和B相同的部分,只取一次】

  UNION  ALL (并集),返回各个查询的所有记录,包括重复记录。【如 A∪+ B 取A和B的所有信息,相同的部分各取一次 】

  UNION (并集),返回各个查询的所有记录,不包括重复记录。【如A∪B 取A和B所有的信息,相同的部分只取一次】

  MINUS (补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。【如A-B 取属于A但不属于B的部分】

当使用集合操作时,需要注意,查询所返回的列数以及列的类型必须匹配,列名可以不同。

 

一、求补运算

1.  求没有员工的部门,只需要求出dept表中的部门号(全部的部门号)与emp表中的部门号(有员工的部门号)的补集即可,如:

SELECT deptno FROM DEPT MINUS SELECT deptno FROM EMP; 

可知,40代表的这个部门没有员工。

 

二、联合运算(union) 【去重,不排序】

1 select empno,ename,sal,deptno from emp where deptno=20 
2 union 
3 select empno,ename,sal,deptno from emp where sal>=3000;

 

三、完全联合运算 【不去重】

1 select empno,ename,sal,deptno from emp where deptno=20 
2 union all
3 select empno,ename,sal,deptno from emp where sal>=3000;

 

四、相交运算 【intersect】

1 select empno,ename,sal,deptno from emp where deptno=20 
2 intersect
3 select empno,ename,sal,deptno from emp where sal>=3000;

 

转载于:https://www.cnblogs.com/anchun7080/p/8183064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值