一、Oracle連接類型
成都創(chuàng)新互聯(lián)是一家專業(yè)提供寬甸企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站制作、成都網(wǎng)站建設、外貿(mào)營銷網(wǎng)站建設、H5開發(fā)、小程序制作等業(yè)務。10年已為寬甸眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。
☆說明:按照自己的理解劃分的類型,并不是官方定義。
1、內(nèi)連接
①等值連接
②非等值連接
③自然連接
2、外連接
①左外連接
②右外連接
③全外連接
二、表數(shù)據(jù)準備
t表 | |
字段a | 字段b |
1 | 18 |
2 | 28 |
3 | 38 |
4 | NULL |
t1表 | |
字段x | 字段y |
1 | 9 |
2 | 8 |
3 | 7 |
三、內(nèi)連接
1、內(nèi)連接是通過inner join進行多表關聯(lián),展示查詢結果,示例如下:
SQL>select * from t inner join t1 on t.a=t1.x;
效果展示:
說明:通過t表inner join t1表,我們得到了上圖的展示效果。
2、同樣實現(xiàn)上圖中的查詢結果,我們還可以利用等值連接的方式實現(xiàn)
SQL>select * from t,t1 where t.a=t1.x;
3、inner join可以簡化為join,但是實際使用中不建議這樣書寫,因為可讀性不高。
4、通俗的理解是等值連接、非等值連接、自然連接都是內(nèi)連接這個大范疇的具體表現(xiàn)形式。
5、不等值連接可以用where和inner join兩種方式實現(xiàn)
SQL>select * from t inner join t1 on t.a<>t1.x;
SQL>select * from t,t1 where t.a<>t1.x;
上面這兩句sql的展示結果是相同的。
6、自連接(self join)是SQL語句中經(jīng)常要用的連接方式,使用自連接可以將自身表的一個鏡像當作另一個表來對待,從而能夠得到一些特殊的數(shù)據(jù)。
例如:select * from employee worker,employee manger where worker.id=manger.id
四、外連接
1、左外連接:通過關鍵字left join實現(xiàn),全寫是left out join,實際操作過程中一般寫作left join,還可以通過在右側連接值后加(+)來代替,左連接的意思是兩表關聯(lián),顯示查詢數(shù)目以左表為準,但是約束受到右表的影響,對于不符合等值的情況,用NULL代替,如下例:
說明:首先通過等值連接,正常把前3行數(shù)據(jù)關聯(lián)顯示出來,之所以顯示第4行是因為sql語句是左連接,正如我們所述,數(shù)據(jù)展示條數(shù)以左表為準,但是不符合要求的統(tǒng)統(tǒng)用NULL進行了填充。
2、右連接:與左連接相反,核心思想相同,只要熟練掌握左連接,右連接自然無師自通。
3、關于(+)使用的注意事項:
(+)操作符只能出現(xiàn)在where子句中,并且不能與outer join語法同時使用。
當使用(+)操作符執(zhí)行外連接時,如果在where子句中包含有多個條件,則必須在所有條件中都包含(+)操作符
(+)操作符只適用于列,而不能用在表達式上。
(+)操作符不能與or和in操作符一起使用。
(+)操作符只能用于實現(xiàn)左外連接和右外連接,而不能用于實現(xiàn)完全外連接。
4、全外連接:通過full join關鍵字連接實現(xiàn),左邊和右表都不受限制,兩表都不滿足條件的情況都用NULL填充,全外連接不支持(+)這種寫法,即不能在左表和右表兩邊都寫(+)。
SQL> select * from t full join t1 on t.a=t1.x;