在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的情況的結果集是一樣的。
SQL的內連線與外連線
有兩個表a和表b。表a結構如下 aid int 標識種子,主鍵,自增id aname varchar 資料情況,即用select from a出來的記錄情況如下圖1所示 表b結構如下 bid int 標識種子,主鍵,自增id bnameid int 資料情況,即用select from b出來的記錄...
SQL 內連線,外連線
假設一堆男女在教堂,有夫婦有單身的,假設男為左表,女為右表 教父說 結了婚的人請出去,結了婚的人請手拉手,於是結了婚的男女站了起來,這就是inner 內連 教父說 男的並且和這些男的結婚的女的請出去,結了婚的人請手拉手,於是,結了婚的夫婦手拉手出去,單身的男的也出去了。這就是 left 左連 教父說...
SQL 內連線 外連線
通過where 或者 inner join保留表中的一部分,最直觀就是說 表在選擇投影後,得到的各個元組內的元素都不會是空的。inner join 表中至少乙個匹配時,返回行。左連線 即使右表中沒有匹配,也從左表中返回所有行。因次,元組中的元素若有來自右表,則該元素為空。右連線 即使左表中沒有匹配,...