欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-06 23:43:39
...

集合运算

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

一、联合(UNION)运算

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

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

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

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;