您好,登錄后才能下訂單哦!
集合關(guān)鍵字:
1、UNION:并集,所有的內(nèi)容都查詢,重復(fù)的顯示一次,默認(rèn)進(jìn)行升序排序;
2、UNIONALL:并集,所有的內(nèi)容都顯示,包括重復(fù)的,展示內(nèi)容沒有排序;
3、INTERSECT:交集,只顯示多個(gè)查詢中相同的元素部分;
4、MINUS:差集,顯示第一個(gè)查詢中有,第二個(gè)查詢中沒有的元素
例子:
在scott用戶下,創(chuàng)建表emp2,該表只包含emp中20部門員工的信息:
代碼:create table emp2 as select * fromemp where deptno=20;
先看下emp和emp2兩個(gè)表的區(qū)別:
[emp表結(jié)構(gòu)及內(nèi)容]
[emp2表結(jié)構(gòu)及內(nèi)容]
~ 驗(yàn)證UNION及UNION ALL
UNION:select * from emp UNION select * from emp2;/*使用此語句,重復(fù)的內(nèi)容不再顯示*/
UNION ALL:select * from emp UNION ALL select * from emp2;/*使用此語句,重復(fù)的內(nèi)容依然顯示*/
~ 驗(yàn)證INTERSECT
INTERSECT:select * from emp INTERSECT select * from emp2;/*使用此語句,只顯示兩個(gè)表中彼此重復(fù)的記錄*/
~ 驗(yàn)證MINUS
MINUS:select * from emp MINUS select * from emp2;/*使用此語句,返回顯示差異的記錄*/
總結(jié):
1、進(jìn)行集合操作的兩個(gè)查詢中元素?cái)?shù)量需要相同,數(shù)據(jù)類型相同或近似(推薦是相同);
2、Union和Union all的區(qū)別在于是否顯示重復(fù)的元素以及是否排序;
3、如果兩個(gè)查詢中元素列名稱不相同,進(jìn)行集合操作時(shí),結(jié)果顯示列名稱以第一個(gè)查詢?yōu)闇?zhǔn);
4、進(jìn)行集合操作的查詢,結(jié)尾處可以自行選擇是否加ORDER BY關(guān)鍵字,進(jìn)行自定義排序;
5、如果兩個(gè)查詢中都有NULL這個(gè)空值元素,兩個(gè)查詢在進(jìn)行Union合并操作時(shí),只會(huì)顯示一個(gè)NULL元素行。雖然NULL<>NULL,但是Oracle在執(zhí)行集合操作時(shí),內(nèi)部進(jìn)行隱式函數(shù)處理: sys_op_map_nonnull(null)
函數(shù)解釋官方擴(kuò)展:
In Oracle, NULL does not equal NULL:
This function makes it possible to have NULL =NULL:
翻譯:
在Oracle數(shù)據(jù)庫中,NULL不等于NULL
這個(gè)函數(shù)讓NULL=NULL成為可能。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。