幾種表的連線方式(SQL)

yuan22003發表於2011-08-23
SQL幾種常用連線方式(舊式寫法)
一、NATURAL JOIN(自然連線)
    兩張表通過NATURAL JOIN連線的時候,相當於有個隱含的WHERE子句,對兩張表中同名的對應列相比較看是否相等。 
SQL> select * from emp natural join dept;
返回14行資料 相當於select * from emp , dept where emp.depno = dept.depno;
二、CROSS JOIN(建立笛卡爾積) 
    對兩張表通過交叉聯合產生第三張返回結果集的表。相當於普通的連線。如下返回56行=14*4
select * from emp cross join dept;

三、INNER JOIN(內連線)
   內連線就相當於普通的CROSS JOIN,只是格式不一樣,INNER JOIN在後面有一個ON子句(相當於WHERE)的搜尋條件,用於過濾返回的行。
四、OUTER JOIN (外連線) 
   select * from ta outer join tb on (ta.c1=tb.c1) 
    outer join告訴DBMS生成結果表,在此表中不僅帶有相關(ta.c1=tb.c1)行對,而且還有來自兩個源表中任一表的不匹配的行。 


五、LEFT OUTER JOIN(左連線) RIGHT OUTER JOIN(右連線) 
    select * from ta left outer join  tb on (ta.c1=tb.c1) 
      select * from ta right outer join tb on (ta.c1=tb.c1) 
      left outer join(left join) 告訴DBMS生成包括聯合行和任何不匹配的行的結果表,但是不匹配的行系來自查詢的FROM子句中LEFT OUTER JOIN關鍵詞左邊的表中。
    right outer join(right join)與left outer join(left join)剛好相反。 


六、FULL OUTER JOIN(全連線) 
   FULL OUTER JOIN 返回組合了LEFT OUTER JOIN 和RIGHT OUTER JOIN結果的表


Oracle中常用新式寫法
1. 相等連線
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;


2. 外連線
◆左條件(+) = 右條件;
代表除了顯示匹配相等連線條件的資訊之外,還顯示右條件所在的表中無法匹配相等連線條件的資訊。
此時也稱為"右外連線".另一種表示方法是:
SELECT ... FROM 表1 RIGHT OUTER JOIN 表2 ON 連線條件
◆左條件 = 右條件(+);
代表除了顯示匹配相等連線條件的資訊之外,還顯示左條件所在的表中無法匹配相等連線條件的資訊。
此時也稱為"左外連線".
SELECT ... FROM 表1 LEFT OUTER JOIN 表2 ON 連線條件
3. 不等連線
兩個表中的相關的兩列進行不等連線,比較符號一般為>,<,...,BETWEEN.. AND..
SELECT EMPNO,ENAME,SAL,GRADE FROM SALGRADE,EMP
WHERE EMP.SAL BETWEEN LOSAL AND HISAL;
4. 自連線
自連線是資料庫中經常要用的連線方式,使用自連線可以將自身表的一個映象當作另一個表來對待,從而能夠得到一些特殊的資料。





相關文章