1. 程式人生 > 實用技巧 >笛卡爾乘積與資料庫連線(join)

笛卡爾乘積與資料庫連線(join)

一、笛卡爾乘積與資料庫連線(join)

資料庫連線是從兩個關係的笛卡爾乘積中選取屬性間滿足一定條件的元組。


現有兩個關係R、S:
關係R:
關係R
關係S:
關係S
關係R與S的笛卡爾乘積為:
笛卡爾乘積
在連線中有兩種非常重要的連線:等值連線與自然連線。
等值連線:(條件R.B = S.B)
這裡寫圖片描述
當然也可以有非等值連線(比如R.C < S.E)
自然連線是一種特殊的等值連線,它要求兩個關係中進行比較的分量必須是同名的屬性值,並且在結果中把重複的屬性列去掉。
自然連線:
自然連線


在自然連線時候,關係R中的某些元祖有可能在S中不存在公共屬性值相等的元祖,從而造成R中的這些元祖丟失了,同樣,S中有些元祖也可能被捨棄。這些捨棄的元祖被稱為懸浮元祖。

如果把懸浮元祖也保留在結果關係中,而在其他屬性上填空值(null),那麼這種連線稱為外連線;只保留左邊關係R中的懸浮元祖稱為左外連線;只保留右邊關係的懸浮元祖稱為右外連線
外連線:
外連線
左外連線:
左外連線
右外連線
右外連線
注意:left outer on … where …在on後的條件跟在where後的條件不一樣。
on後的:右表記錄能不能跟左表連線的條件
where後的:連線完成後進行篩選