溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle集合操作

發(fā)布時(shí)間:2020-07-07 11:22:00 來源:網(wǎng)絡(luò) 閱讀:959 作者:oracle夢想 欄目:關(guān)系型數(shù)據(jù)庫

集合關(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)容]

Oracle集合操作

 

[emp2表結(jié)構(gòu)及內(nèi)容]

Oracle集合操作

~ 驗(yàn)證UNION及UNION ALL

 UNION:select * from emp UNION select * from emp2;/*使用此語句,重復(fù)的內(nèi)容不再顯示*/

Oracle集合操作

 

 UNION ALL:select * from emp UNION ALL select * from emp2;/*使用此語句,重復(fù)的內(nèi)容依然顯示*/

Oracle集合操作

~ 驗(yàn)證INTERSECT

 INTERSECT:select * from emp INTERSECT select * from emp2;/*使用此語句,只顯示兩個(gè)表中彼此重復(fù)的記錄*/

Oracle集合操作


~
驗(yàn)證MINUS

 MINUS:select * from emp MINUS select * from emp2;/*使用此語句,返回顯示差異的記錄*/

Oracle集合操作

總結(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成為可能。


向AI問一下細(xì)節(jié)

免責(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)容。

AI