表的連接是指在一個SQL語句中通過表與表之間的關(guān)連 從一個或多個表中檢索相關(guān)的數(shù)據(jù) 大體上表與表之間的連接主要可分四種 分別為相等連接 外連接 不等連接和自連接 本文將主要從以下幾個典型的例子來分析Oracle表的四種不同連接方式:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網(wǎng)絡空間、營銷軟件、網(wǎng)站建設(shè)、鐵東網(wǎng)站維護、網(wǎng)站推廣。
相等連接
通過兩個表具有相同意義的列 可以建立相等連接條件
只有連接列上在兩個表中都出現(xiàn)且值相等的行才會出現(xiàn)在查詢結(jié)果中
例 查詢員工信息以及對應的員工所在的部門信息;
SELECT?*?FROM?EMP DEPT; SELECT?*?FROM?EMP DEPT WHERE?EMP DEPTNO?=?DEPT DEPTNO;
REM 顯示工資超過 的員工信息以及對應的員工的部門名稱
外連接
對于外連接 Oracle中可以使用 (+) 來表示 i可以使用LEFT/RIGHT/FULL OUTER JOIN 下面將配合實例一一介紹 除了顯示匹配相等連接條件的信息之外 還顯示無法匹配相等連接條件的某個表的信息
外連接采用(+)來識別
A) 左條件(+) = 右條件;
代表除了顯示匹配相等連接條件的信息之外 還顯示右條件所在的表中無法匹配相等連接條件的信息
此時也稱為 右外連接 另一種表示方法是:
SELECT FROM 表 RIGHT OUTER JOIN 表 ON 連接條件
B) 左條件 = 右條件(+);
代表除了顯示匹配相等連接條件的信息之外 還顯示左條件所在的表中無法匹配相等連接條件的信息
此時也稱為 左外連接
SELECT FROM 表 LEFT OUTER JOIN 表 ON 連接條件
例 顯示員工信息以及所對應的部門信息
無法顯示沒有部門的員工信息
無法顯示沒有員工的部門信息
SELECT?*?FROM?EMP DEPT?WHERE?EMP DEPTNO?=?DEPT DEPTNO;
直接做相等連接:
SELECT?*?FROM?EMP?JOIN?DEPT?ON?EMP DEPTNO?=?DEPT DEPTNO;
REM 顯示員工信息以及所對應的部門信息 顯示沒有員工的部門信息
SELECT?*?FROM?EMP DEPT?WHERE?EMP DEPTNO(+)?=?DEPT DEPTNO; SELECT?*?FROM?EMP?RIGHT?OUTER?JOIN?DEPT?ON?EMP DEPTNO?=?DEPT DEPTNO;
REM 顯示員工信息以及所對應的部門信息 顯示沒有部門的員工信息
SELECT?*?FROM?EMP DEPT?WHERE?EMP DEPTNO?=?DEPT DEPTNO(+); SELECT?*?FROM?EMP?LEFT?OUTER?JOIN?DEPT?ON?EMP DEPTNO?=?DEPT DEPTNO;
不等連接
兩個表中的相關(guān)的兩列進行不等連接 比較符號一般為 BEEEN AND
REM?SALGRADE DESC?SALGRADE; SELECT?*?FROM?SALGRADE;
REM 顯示員工的編號 姓名 工資 以及工資所對應的級別
SELECT?EMPNO ENAME SAL SALGRADE *?FROM?SALGRADE EMP WHERE?EMP SAL?BEEEN?LOSAL?AND?HISAL;
REM 顯示雇員的編號 姓名 工資 工資級別 所在部門的名稱;
SELECT?EMPNO ENAME SAL GRADE DNAME?FROM?EMP DEPT SALGRADE WHERE?EMP DEPTNO?=?DEPT DEPTNO?AND?EMP SAL?BEEEN?LOSAL?AND?HISAL;
自連接
自連接是數(shù)據(jù)庫中經(jīng)常要用的連接方式 使用自連接可以將自身表的一個鏡像當作另一個表來對待 從而能夠得到一些特殊的數(shù)據(jù) 下面介紹一下自連接的方法:
將原表復制一份作為另一個表 兩表做笛卡兒相等連接
例 顯示雇員的編號 名稱 以及該雇員的經(jīng)理名稱
SELECT WORKER ENAME WORKER MGR MANAGER EMPNO MANAGER ENAME FROM EMP WORKER EMP MANAGER
lishixinzhi/Article/program/Oracle/201311/16733
創(chuàng)建表:
create?table?a
(id?int,
value?varchar2(1));
create?table?b
(id?int,
value?varchar2(1));
insert?into?a?values?(1,'A');
insert?into?a?values?(1,'B');
insert?into?a?values?(2,'A');
insert?into?a?values?(2,'B');
insert?into?a?values?(2,'C');
insert?into?b?values?(1,'A');
insert?into?b?values?(1,'B');
insert?into?b?values?(1,'C');
insert?into?b?values?(2,'A');
insert?into?b?values?(2,'B');
commit;
執(zhí)行:
select?nvl(a.id,b.id)?id,a.value,b.value?from?a?full?join?b?on?a.id=b.id?and?a.value=b.value?order?by?id,a.value
結(jié)果:
--實驗用表:
CREATE?TABLE?A(NAME?VARCHAR2(10),?DEPTID?VARCHAR2(2));
CREATE?TABLE?B(ID?VARCHAR2(10),?DEPTID?VARCHAR2(2),?NUM?VARCHAR2(2),?CREATE_TIME?DATE);
--查詢某一時間段內(nèi);全部部門及其業(yè)務量
SELECT?A.NAME,?COUNT(B.ID),?SUM(B.NUM)?AS?部門業(yè)務量
FROM?A?A,?B?B
WHERE?A.DEPTID?=?B.DEPTID(+)
AND?B.CREATE_TIME??TO_DATE('20141001',?'yyyyMMdd')
AND?B.CREATE_TIME??TO_DATE('20141022',?'yyyyMMdd')
GROUP?BY?A.NAME;
select e.empno, e.ename, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno;
在之前所使用的查詢操作之中,都是從一張表之中查詢出所需要的內(nèi)容,那么如果現(xiàn)在一個查詢語句需要顯示多張表的數(shù)據(jù),則就必須應用到多表查詢的操作,而多表查詢的語法如下:
SELECT [DISTINCT] * | 字段 [別名] [,字段 [別名] ,…] FROM 表名稱 [別名], [表名稱 [別名] ,…] [WHERE 條件(S)] [ORDER BY 排序字段 [ASC|DESC] [,排序字段 [ASC|DESC] ,…]]。
擴展資料:
Oracle 常用的關(guān)聯(lián)查詢:
Oracle外連接:
(1)左外連接 (左邊的表不加限制)。
(2)右外連接(右邊的表不加限制)。
(3)全外連接(左右兩表都不加限制)。
outer join則會返回每個滿足第一個(頂端)輸入與第二個(底端)輸入的聯(lián)接的行。它還返回任何在第二個輸入中沒有匹配行的第一個輸入中的行。
外連接分為三種: 左外連接,右外連接,全外連接。 對應SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我們省略outer 這個關(guān)鍵字。 寫成:LEFT/RIGHT/FULL JOIN。
在左外連接和右外連接時都會以一張表為基表,該表的內(nèi)容會全部顯示,然后加上兩張表匹配的內(nèi)容。 如果基表的數(shù)據(jù)在另一張表沒有記錄。 那么在相關(guān)聯(lián)的結(jié)果集行中列顯示為空值(NULL)。
名稱欄目:oracle怎么兩表聯(lián)查 oracle 兩表聯(lián)查
URL地址:http://chinadenli.net/article46/hpgjeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、做網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)站排名、建站公司、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)