一.集合的三種運算解釋:
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...