這一章,要用到兩個表:emp和job_history.下面是job_history的建立資訊:
create table job_history(
empno number(4) not null,
deptno number(4) not null ,
start_date date,
end_date date,
job varchar2(9));
insert into job_history values(7369,10,'01-1月-2002','31-12月-2004','clerk');
insert into job_history values(7369,20,'01-1月-2005','31-12月-2006','clerk');
insert into job_history values(7499,10,'15-2月-2002','31-12月-2004','salesman');
insert into job_history values(7499,20,'12-3月-2005','31-12月-2006','salesman');
insert into job_history values(1000,10,'15-2月-2002','31-12月-2004','salesman');
1.聯合運算(union)
-從兩個查詢返回除去重複值後的結果
例:顯示當前和以前所有雇員的工作崗位,重複的記錄不顯示
select empno,job
from emp
union
select empno,job
from job_history;
結果:empno job
1000
7369 clerk
7499 salesman
7521 salesman
...7934 clerk
2.全聯合運算(union all)
-從兩個查詢返回包括所有重複值的結果
例:顯示當前和以前所有雇員所在的部門
select empno,job,deptno
from emp
union all
select empno,job,deptno
from job_history
order by empno;
結果:empno job deptno
1000 10
7369 clerk 20
7499 salesman 30
7521 salesman 30
7566 manager 20
7654 salesman 30
7698 manager 30
7782 manager 10
7788 analyst 20
7839 president 10
7844 salesman 30
7876 clerk 20
7900 clerk 30
7902 analyst 20
7934 clerk 10
3.相交運算(intersect)
-返回多個查詢中所有相同的行
例:顯示雇員表的emp和job,這些雇員當前所做的工作是他們以前做過一段時間,後來有變化,現在又在做的工作
select empno,job
from emp
intersect
select empno,job
from job_history;
結果:empno job
7369 clerk
7499 salesman
4.相減運算(minus)
-返回在第乙個查詢中而不再第二個查詢中的行
例:顯示那些從來沒有改變過他們工作的雇員
select empno,job
from emp
minus
select empno,job
from job_history;
結果:empno job
1000
7521 salesman
7566 manager
7654 salesman
7698 manager
7782 manager
7788 analyst
7839 president
7844 salesman
7876 clerk
7900 clerk
7902 analyst
7934 clerk
5.結合運算的原則
-在兩個select列表中的表示式必須在數目上和資料型別上相匹配
-在結果中的列名是第乙個查詢中出現的列名
-order by子句:
-只能出現在語句的最後
-從第乙個select語句接收列名、別名,或者位置記號
6.匹配select語句
例:使用union運算,顯示所有雇員的empno、job和sal
select empno,job,sal
from emp
union
select empno,job,0
from job_history;
結果:empno job sal
1000 salesman 0
1000 3000
7369 clerk 0
7369 clerk 2000
7499 salesman 0
7499 salesman 1600
7521 salesman 1250
7566 manager 2975
7654 salesman 1250
7698 manager 2850
7782 manager 2450
7788 analyst 3000
7839 president 5000
7844 salesman 1500
7876 clerk 1100
7900 clerk 950
7902 analyst 3000
7934 clerk 1300
練習:1.用集合運算,列出不包含job為clerk的部門的部門號
select deptno
from emp
minus
select deptno
from emp
where job='clerk';
2.列出雇員的雇員編號和工作標識,哪些雇員現在的工作和他們以前的工作相同
select empno,job
from emp
intersect
select empno,job
from job_history;
3.寫乙個復合查詢,列出下面的資訊:
-emp表中所有雇員的名字和部門標識
-dept表中的所有部門標識和部門名稱
select ename,deptno,to_char(null)
from emp
union
select to_char(null),deptno,dname
from dept;
oracle9i學習筆記之十四 使用集合運算
這一章,要用到兩個表 emp和job history.下面是job history的建立資訊 create table job history empno number 4 not null,deptno number 4 not null start date date,end date date...
學習oracle9i 筆記(2)
接著上一次的筆記,我在把我一些學習oracle9i的心得繼續記錄下來,為那些剛剛學習oracle 的人,一些幫助 oracle中常用的資料型別為 常用的資料庫字段型別如下 字段型別 中文說明 限制條件 其它說明 char 固定長度字串 最大長度2000 bytes varchar2 可變長度的字串 ...
oracle 9i學習之路
oracle基本元件結構圖oracle管理後台儲存樹結構圖 引數檔案 parameter 一 9i之前版本 pfile檔案,文字格式 二 spfile檔案,二進位制格式 口令檔案 password 本地的sysdba,以作業系統認證的形式登入。遠端的sysdba,通過passwordfile認證 儲...