資料中的連線join分為內連線、自然連線、外連線,外連線又分為左外連線、右外連線、全外連線
當然,這些分類都是在連線的基礎上,是從兩個表中記錄的笛卡爾積中選取滿足連線的記錄。笛卡爾積簡單的說就是乙個表裡的記錄要分別和另外乙個表的記錄匹配為一條記錄,即如果表a有3條記錄,表b也有三條記錄,經過笛卡爾運算之後就應該有3*3即9條記錄。如下表:
自然連線(natural join)
自然連線是一種特殊的等值連線,他要求兩個關係表中進行比較的必須是相同的屬性列,無須新增連線條件,並且在結果中消除重複的屬性列。
sql語句:select …… from 表1 natural join 表2
結果:內連線(inner join)
內連線基本與自然連線相同,不同之處在於自然連線要求是同名屬性列的比較,而內連線則不要求兩屬性列同名,可以用using或on來指定某兩列字段相同的連線條件。
sql語句:select …… from 表1 inner join 表 2 on 表1.a=表2.e
結果:自然連線時某些屬性值不同則會導致這些元組會被捨棄,那如何儲存這些會被丟失的資訊呢,外連線就解決了相應的問題。外連線分為左外連線、右外連線、全外連線。外連線必須用using或on指定連線條件。
左外連線(left outer join)
左外連線是在兩表進行自然連線,只把左表要捨棄的保留在結果集中,右表對應的列上填null。
sql語句:select …… from 表1 left outer join 表2 on 表1.c=表2.c
結果:右外連線(rignt outer join)
右外連線是在兩表進行自然連線,只把右表要捨棄的保留在結果集中,左表對應的列上填null。
select …… from 表1 rignt outer join 表2 on 表1.c=表2.c
結果:
全外連線(full join)
全外連線是在兩表進行自然連線,只把左表和右表要捨棄的都保留在結果集中,相對應的列上填null。
select …… from 表1 full join 表2 on 表1.c=表2.c
結果:
資料庫中的內連線 自然連線 外連線
資料庫中的內連線 自然連線 外連線 資料中的連線join分為內連線 自然連線 外連線,外連線又分為左外連線 右外連線 全外連線。當然,這些分類都是在連線的基礎上,是從兩個表中記錄的笛卡爾積中選取滿足連線的記錄。笛卡爾積簡單的說就是乙個表裡的記錄要分別和另外乙個表的記錄匹配為一條記錄,即如果表a有3條...
資料庫 連線(自然連線 外連線 內連線)
1 自然連線 只考慮那些在兩個關係模式中都出現的屬性上取值相同的元組對natural join join.using select a1,a2,an from r1 natural join r2 natural join natural join rn where p select name1,c...
mysql資料庫外連線,內連線,自然連線
create table join teacher id int primary key auto increment,t name varchar 10 not null,gender enum male female secret not null engine innodb character...