1. 程式人生 > >oracle 多表連接查詢

oracle 多表連接查詢

屬性。 www 運算符 多表連接查詢 數據 from 返回 left join 外鏈

一、內連接(inner join (可簡寫為join))

 內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。

  1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復屬性。 (區別於自然連接)

     SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
    SELECT DEPT.DNAME,EMP.ENAME FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;

  2、不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的 列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。

二、外鏈接

外連接,返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接或左連接))、右表(右外連接或右連接)或兩個邊接表(全外連接)中的所有數據行。

 1.left join(左聯接)等價於(left outer join) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄;

 2.right join(右聯接)等價於(right outer join)返回包括右表中的所有記錄和左表中聯結字段相等的記錄;

 3. full join (全連接)等價於(full outer join)查詢結果等於左外連接和右外連接的和

三、交叉鏈接(笛卡爾積)

  交叉連接不帶ON子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到 結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查 詢條件的數據行數。

SELECT  S.*, T.* FROM STUDENT S CROSS JOIN TEACHER  T ;

等價於:

SELECT  S.*, T.* FROM STUDENT S , TEACHER  T ;

四、自然連接(natural join)

自然連接是在廣義笛卡爾積R×S中選出同名屬性上符合相等條件元組,再進行投影,去掉重復的同名屬性,組成新的關系。即自然連接是在兩張表中尋找那些數據類型和列名都相同的字段,然後自動地將他們連接起來,並返回所有符合條件按的結果。

雖然natural join(自然連接)實際上的用的比較少,但實際上這個連接是非常有用的,若能經常使用一下,實際上是非常方便的。

自然連接是在兩張表中尋找那些數據類型和列名都相同的字段,然後自動地將他們連接起來,並返回所有符合條件按的結果。

來看一下自然連接的例子。

Select emp.ename,dept.dname

From emp natural join dept;

這裏我們並沒有指定連接的條件,實際上oracle為我們自作主張的將,emp中的deptno和dept中的deptno做了連接。

也就是實際上相當於

Select emp.ename,dept.dname

From emp join dept on emp.deptno = dept.deptno;

因為這兩張表的這兩個字段deptno的類型個名稱完全相同。所以使用natural join時被自然的連接在一起了。

另外:

1.如果做自然連接的兩個表的有多個字段都滿足有相同名稱個類型,那麽他們會被作為自然連接的條件。

2.如果自然連接的兩個表僅是字段名稱相同,但數據類型不同,那麽將會返回一個錯誤。

3.由於oracle中可以進行這種非常簡單的natural join,我們在設計表時,應該盡量在不同表中具有相同含義的字段使用相同的名字和數據類型。以方便以後使用natural join

五、自連接

  連接的表是同一張表,使用自連接可以將自身表的一個鏡像當作另一個表來對待,從而能夠得到一些特殊的數據。

oracle 多表連接查詢