https://www.cnblogs.com/hu-yewen/p/5821645.html
首先來看自然連接的定義:
自然連接:是一種特殊的等值連接,它要求兩個關系進行比較的分量必須是相同的屬性組,並且在結果集中將重復屬性列去掉。
一個簡單的例子,將下列關系R和S進行自然連接:
R:
A B C
a b c
b a d
c d e
d f g
S:
A C D
a c d
d f g
b d g
首先要對兩個關系中相同屬性組的分量進行比較,即比較R.A,R.C和S.A,S.C。 顯然在R中只有第一行和第二行滿足條件,因此進行連接得到結果:
A B C D
a b c d
b a d g
再來看一道2008年軟件設計師考試的題目:
若關系R、S如下所示,則R與S自然連接后的屬性列數和元組個數分別為()
R:
A B C D
a b c d
a c d c
a d g f
a b g f
S:
C D
c d
g f
分析,首先進行比較,容易得出R中有三個元組(即三行,1、3、4行)符合條件,所以元組個數為3,再然后去掉重復的列,顯然仍然剩下A、B、C、D四個列。
========================
https://blog.csdn.net/weixin_38134491/article/details/89415925
SQL 等值連接(內連接)、自然連接(Out join,Left join,Right join)的區別
連接join 是從兩個關系的笛卡兒積中選取屬性間滿足一定條件的元組。
連接運算中有兩種最為重要也最為常用的連接,一種是等值連接,一種是外連接。
等值連接
關系R與關系S 等值連接后的結果
自然連接(natural join)
自然連接是一種特殊的等值連接。比較兩幅圖就可以看出,自然連接在結果中把重復的屬性列去掉。
一般的連接操作是從行的角度進行運算,但是自然連接還需要取消重復列,所以是同時從行和列的角度進行運算。
在關系數據庫中,數據庫的重構往往是不可避免的。重構數據庫最常見的是將一個基本表“垂直”地分成多個基本表。例如:將學生關系:
Student(Sno, Sname, Ssex, Sage, Sdept)
分為SX(Sno, Sname, Sage)和SY(Sno, Ssex, Sdept)兩個關系。這時原表Student為SX表和SY表自然連接的結果。
-------------------------------------------------------
外連接(outer join)
左外連接(Left Outer Join)
Left Join 就是一定要把左邊保證了,右邊沒有的就填NULL
右外連接(Right Outer Join)
Right Join 就是一定要把右邊保證了,左邊沒有的就填NULL
總結
Left join 是 Left outer join 的簡稱
Right join 是 Right outer join 的簡稱
在做自然連接時被舍棄的元組叫懸浮元組(dangling tuple)
Left outer join就是保留了左邊關系R中的懸浮元組
Right outer join就是保留了右邊關系S中的懸浮元組
Outer join就是把懸浮元組保存在結果中,在其他屬性上填NULL
==============