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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章