Oracle資料庫的查詢之集合運算 七

2021-07-29 09:55:41 字數 1858 閱讀 3240

一.集合的三種運算解釋:

union:返回兩個集合中所有的記錄,不包括重複行,同時進行預設規則的排序;

union all:返回兩個集合中所有的記錄,包括重複行,不進行排序;

intersect:返回同時屬於兩個集合的記錄,不包括重複行,同時進行預設規則的排序;

minus:返回屬於第乙個集合但不屬於第二個集合的記錄,不包括重複行,同時進行預設規則的排序。

二.union和union all的區別

1.union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全部顯示出來,不管是不是重複。

2.推薦使用union all,因為查詢速度更快.

3.union其實就是union all + distinct

4.當其他語句能實現的相同的操作的時候,盡量不要使用集合運算.

三.例子:

1.並集操作

查詢10和20號部門的員工

第一種方式:

select *

from emp

where deptno in (10,20);

第二種方式:

select *

from emp

where deptno=10

or deptno=20;

第三種方式:

select * from emp where deptno=10

union

select * from emp where deptno=20;

2.交集操作

顯示薪水同時位於級別1(700-1300)和級別2(1201-1400)的員工資訊

select ename,sal

from emp

where sal between 700

and1300

intersect

select ename,sal

from emp

where sal between 1201

and1400;

3.差集操作

顯示薪水同時位於級別1(700-1300),但不屬於級別2(1201-1400)的員工資訊

select ename,sal

from emp

where sal between 700

and1300

minus

select ename,sal

from emp

where sal between 1201

and1400;

四.關於集合運算注意事項

1. 參與運算的各個集合必須列數相同 且型別一致,當列數不同時,可以使用 to_number(null),to_char(null)等函式補齊.

2. 採用第乙個語句的表頭作為最後的表頭.

3. order by永遠在最後一句查詢語句的後邊.

4. 可以使用括號改變集合執行的順序

select deptno,job,sum(sal) from emp group

by deptno,job

union

select deptno,to_char(null),sum(sal) from emp group

by deptno

union

select to_number(null),to_char(null),sum(sal) from emp;

資料庫之集合查詢

集合查詢 一 並查詢 union 格式 select from 表1 left join 表2 on.union select from 表2 right join 表2 on.作用 求兩個select的並集,去掉重複項 注意 兩個表的字段數和資料型別相同 二 交查詢 intersect 格式 se...

Oracle資料庫的查詢之基本查詢 一

一.別名的使用 三種方式 1.原列名 as 新列名 2.原列名 新列名 3.原列名 新列名 注意事項 1和2的方式沒有區別,2和3的命名有區別 第3種方式中不能有空格,關鍵字,數字等字元.第2種方式可以使用空格等其他特殊字元 例如 select empno as 員工號 ename 姓名 sal 薪...

Oracle資料庫查詢

取得該使用者下所有的表 select from user tables 取得表名為classinfo的注釋資訊 select from user tab comments where table name classinfo 取得該使用者下表名為classinfo表的結構 select from u...