oracle数据库SQL开发之集合运算

集合运算

在这里插入图片描述

一、联合(UNION)运算

– 返回由任一查询结果集包含的行,并且去除重复行,并且按照查询结果集的第一列序排序。

– 使用原则
• 多个被联合的查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同。
• 如果多个查询结果都有NULL值,整个结果中只包含一个NULL值
• 每个查询不能包含自己的Order by子句,只能在联合之后使用Order by子句

在这里插入图片描述

SQL>SELECT deptno,to_char(NULL),ename,hiredate FROM emp
	UNION
	SELECT deptno,loc,to_char(NULL),to_date(NULL) FROM dept;

二、完全联合 (UNION ALL) 运算

– 返回由任一查询结果集包含的行,并且包含重复行,默认情况下不对结果集进行排序。

– 使用原则
• 多个被联合的查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同。
• 如果多个查询结果都有NULL值,不被去掉。
• 每个查询不能包含自己的Order by子句,只能在联合之后使用Order by子句

注意:使用UNION ALL会比UNION的速度快,因为省去了去掉重复记录和排序的时间。

三、相交运算(intersect)

– 返回多个查询结果集的 公有行

– 使用原则
• 多个查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同。
• 相交运算不忽略空值

–查询哪些员工做过岗位调动

SQL>SELECT empno FROM emp
	    INTERSECT
		SELECT empno FROM emp_jobhistory;

四、相减运算 (minus)

– 返回第一个查询中存在 而第二个查询中不存在的行记录

– 使用原则
• 多个查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同。
• 相减运算不忽略空值。

–查询哪些员工没做过岗位调动

SQL>SELECT empno FROM emp
		MINUS
		SELECT empno FROM emp_jobhistory;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值