各種連接(Natural Join, Outer Join等)的區(qū)別

連接join也叫 theta join(θ join, θ連接)。它是從兩個關(guān)系的笛卡兒積中選取屬性間滿足一定條件的元組。

連接運(yùn)算中有兩種最為重要也最為常用的連接,一種是等值連接,一種是自然連接。

等值連接

關(guān)系R與關(guān)系S

等值連接后的結(jié)果

等值連接

自然連接(natural join)

自然連接是一種特殊的等值連接。比較兩幅圖就可以看出,自然連接在結(jié)果中把重復(fù)的屬性列去掉。

一般的連接操作是從行的角度進(jìn)行運(yùn)算,但是自然連接還需要取消重復(fù)列,所以是同時從行和列的角度進(jìn)行運(yùn)算。

在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)庫的重構(gòu)往往是不可避免的。重構(gòu)數(shù)據(jù)庫最常見的是將一個基本表“垂直”地分成多個基本表。例如:將學(xué)生關(guān)系:

Student(Sno, Sname, Ssex, Sage, Sdept)

分為SX(Sno, Sname, Sage)和SY(Sno, Ssex, Sdept)兩個關(guān)系。這時原表Student為SX表和SY表自然連接的結(jié)果。

自然連接后的結(jié)果

關(guān)系R跟S自然連接后的結(jié)果

外連接(outer join)

關(guān)系R跟S外連接之后的結(jié)果

左外連接(Left Outer Join)

左外連接

感覺Left Join 就是一定要把左邊保證了,右邊沒有的就填NULL

右外連接(Right Outer Join)

右外連接

同樣的,感覺Right Join 就是一定要把右邊保證了,左邊沒有的就填NULL

總結(jié)

連接

Left join 是 Left outer join 的簡稱
Right join 是 Right outer join 的簡稱

在做自然連接時被舍棄的元組叫懸浮元組(dangling tuple)

Left outer join就是保留了左邊關(guān)系R中的懸浮元組
Right outer join就是保留了右邊關(guān)系S中的懸浮元組
Outer join就是把懸浮元組保存在結(jié)果中,在其他屬性上填NULL

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容