Sql 內連接和外連接

     在Oracle的SQL語句常用的連接有內連接(inner join),外連接(outer join)等,內連接又包括等值連接,非等值連接,自連接;而外連接又分爲左連接和右連接。其中默認的是內連接的等值連接。

     爲了方便我們創建兩張最簡易的表A、B,具體的表結構參看下面,來分析內連接與外連接的區別

圖1,表A          圖2 表B

                      圖1                                                                      圖2

 

兩個表要做連接,必須要有連接字段,而在表A和表B中連接字段是Aid和Bnamid,下圖說明了連接之間關係圖3

圖3

                                                                  圖3

    (1) 內連接:利用內連接(等值)就可獲取藍色的公共部分C,即圖3中的數據集C,結果集爲如下:

   

             圖4

                                                                   圖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

                                                                    圖  5

 

右外連接即公共顯示的藍色部分C1+顯示綠色的B1,顯示語句等價於select * from A,B where A.Aid(+)=B.Bnamid;

          圖6 

                                                                      圖6

 

  表A和表B情況是相對的,以上實驗都是A在左邊的情況,其實A left join B與B right join A的情況的結果集是一樣的。

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