oracle集合運算

2021-08-11 18:03:38 字數 2381 閱讀 4812

主要運用 : 資料統計

並集: union

交集 :interset

差集:minus

使用oracle提供的scott使用者進行演示

– 工資大於1500 或者是20號部門下的員工(並集運算)

1.使用union

select * from emp where sal > 1500

union

select * from emp where deptno = 20;

2.使用union all

這個sql在執行時先取出兩個表的結果,再用排序空間進行排序刪除重複的記錄,最後返回結果集,如果表資料量大的話可能會導致用磁碟進行排序。

而union all只是簡單的將兩個結果合併後就返回。這樣,如果返回的兩個結果集中有重複的資料,那麼返回的結果集就會包含重複的資料了。

從效率上說,union all要比union快很多,所以,如果可以確認合併的兩個結果集中不包含重複的資料的話,那麼就使用union all

–工資大於1500 並且是20號部門下的員工(交集運算)

—- 工資大於1500 並且不是20號部門下的員工(差集運算)

-- 工資大於1500 並且不是20號部門下的員工

注意事項演示

出錯原因,引數數量不匹配,oracle要求引數數量要一致

解決方案: 如果沒有相同的列的話就是用null填充,

出錯原因 ,

引數型別不一致, sal 是 number 型別, job是varchar2型別 ,

解決方案,

使用 0 或 「」 或 null代替

建議的話使用null代替,因為null是萬能的 , 0 只能代替 數字 , 「」只能代替varchar型別

還有一點要注意的是

問題歸總

查詢型別要一致

查詢引數個數要一致

列的含義要求一致

總結 :

union 跟 union all 的區別

union: 其實就相當於或的意思

intersect : 其實就相當是並且的意思

minus :其實就相當是取反的意思,

以上就是oracle的集合運算,

Oracle 集合運算

集合運算注意的問題 union並集 intersect交集 minus差集 1 參與運算的各個集合必須列數相同 且型別一致 2 採用第乙個集合作為最後結果的表頭 3 order by永遠在最後 4 括號 sql優化 盡量不要使用集合運算 多次查詢資料庫,效率低 select from emp whe...

Oracle 集合運算

準備工作 oracle使用者scott下emp表 dept表。dept表 select t.deptno from dept t 結果 table deptno 10 20 30 40 table emp表 select t.deptno from emp t 結果 table deptno 10 ...

Oracle 集合運算

使用者scott下 emp表 select deptno from dept img emp表 select deptno from emp img oracle集合函式包括 minus 差集 union 並集 union all 不排重並集 intersect 交集 1.minus 找到兩個給定的...