sql各種表連接

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. 自連接
自連接是數據庫中經常要用的連接方式,使用自連接可以將自身表的一個鏡像當作另一個表來對待,從而能夠得到一些特殊的數據。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章