連接分類 關系間的連接分為內連接(inner join)和外連接(outer join)。
外連接又可分為:left outer join,right outer join和full outer join。
內連接計算方法:
如果不加條件將會產生笛卡爾積;
如果有連接條件,按照下一節"連接條件"的規則進行運算,符合條件的元組放入結果關系中。
left outer join 計算過程: 1)計算相同連接條件下的內連接,將符合條件的元組放入結果關系中;
2)如果左關系中有元組不符合條件,將之放入結果關系中,余下的用NULL補足
right outer join 計算過程: 1)計算相同連接條件下的內連接,將符合條件的元組放入結果關系中;
2)如果右關系中有元組不符合條件,將之放入結果關系中,余下的用NULL補足
full outer join
1)計算相同連接條件下的內連接,將符合條件的元組放入結果關系中;
2)如果左、右關系中有元組不符合條件,將之放入結果關系中,余下的用NULL補足
as用來修改連接後結果關系的關系名稱以及屬性名稱。
連接條件 關系之間的連接是可以有條件的,外連接必須要加條件,內連接如果不加條件將會產生笛卡爾積。
有哪些連接條件呢?
natural --
1)兩個關系(左關系和友關系)中所有具有相同的名稱的屬性的值要相等。
2)natural 總是出現在 join語句前面
3)natural的結果關系中,相同名稱的屬性只會出現一次
4)natural的結果關系中,屬性的排列順序總是按照左關系優先的原則。
5) MySQL中,natural join不能使用on指定其他查詢條件
on--
1)on 用在join語句後面
2)on 後面采用關系1.屬性a=關系2.屬性b 的謂詞語法
using--
1)和natural類似,只是顯式指定了屬性名稱
2)如果using也指定了所有相同名稱的屬性,那麼和natural相同
MySQL
MySQL中,natural join和 left outer join不能在同時使用,可以先將natural join語句做成一個view,然後再使用left outer join
join 默認為inner join