sql內連結,外連線

職業驅魔師發表於2013-06-25
  在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的情況的結果集是一樣的。

相關文章