在Oracle的SQL語句常用的連接有內連接(inner join),外連接(outer join)等,內連接又包括等值連接,非等值連接,自連接;而外連接又分爲左連接和右連接。其中默認的是內連接的等值連接。
爲了方便我們創建兩張最簡易的表A、B,具體的表結構參看下面,來分析內連接與外連接的區別
圖1 圖2
兩個表要做連接,必須要有連接字段,而在表A和表B中連接字段是Aid和Bnamid,下圖說明了連接之間關係圖3
圖3
(1) 內連接:利用內連接(等值)就可獲取藍色的公共部分C,即圖3中的數據集C,結果集爲如下:
圖4
其實select * from A join B on A.Aid=B.Bnamid;等價於select * from A,B where A.Aid=B.Bnamid;
注:非等值連接主要的話是針對一個範圍來查詢數據,自連接主要就是把1張表堪稱兩張表來用
(2)外連接:分爲左外連接(left join)與右外連接(right join)
左外連接即公共顯示的藍色部分C1+顯示黃色的記錄集A1,顯示語句等價於select * from A,B where A.Aid=B.Bnamid(+);
圖 5
右外連接即公共顯示的藍色部分C1+顯示綠色的B1,顯示語句等價於select * from A,B where A.Aid(+)=B.Bnamid;
圖6
表A和表B情況是相對的,以上實驗都是A在左邊的情況,其實A left join B與B right join A的情況的結果集是一樣的。