外鏈接包括左向外聯接、右向外聯接和完整外部聯接。
左鏈接:left join 或 left outer join
左向外聯接的結果集包括 LEFT OUTER 子句中指定的左表的全部行,不只是鏈接列所匹配的行。若是左表的某行在右表中沒有匹配行,因而在相關聯的結果集行中,右表的全部選擇列均爲空值(null)。
sql 語句:select * from table1 left join table2 on table1.id=table2.idsql
右向外鏈接:right join 或 right outer join
右向外聯接是左向外聯接的反向聯接。將會返回右邊表的全部行。若是右表的某行在左表中沒有匹配行,則將爲左表返回空值。
sql 語句:select * from table1 right join table2 on table1.id=table2.idcode
完整外部聯接:full join 或 full outer join
完整外部聯接返回左表和右表中的全部行。當某行在另外一個表中沒有匹配行時,則另外一個表的選擇列表列包含空值。若是表之間有匹配行,則整個結果集行包含基表的數據值。
sql 語句:select * from table1 full join table2 on table1.id=table2.idget
內鏈接:內聯接是用比較運算符比較要聯接列的值的聯接
內鏈接:join 或 inner join
sql 語句:select * from table1 join table2 on table1.id=table2.idtable
等價(與下列執行效果相同)
A:select a.*,b.* from table1 a,table2 b where a.id=b.id
B:select * from table1 cross join table2 where table1.id=table2.idselect
交叉鏈接(徹底):沒有 WHERE 子句的交叉聯接將產生聯接所涉及的表的笛卡爾積。 第一個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。(table1和table2交叉鏈接產生3*3=9條記錄)
交叉鏈接:cross join (不帶條件where...)
sql語句:select * from table1 cross join table2sql語句
等價(與下列執行效果相同)
A:select * from table1,table2數據