表連接的類型: 1.內連接(inner join):是最常用的一種連接方式,只返回兩個數據集合之間匹配關系的行,將位于兩個互相交叉的數據集合中重疊部分以內的數據行連接起來。 例子:在表A和表B中使用內連接查詢學生姓名,學校和職業。 實現方式一: select A.姓名,A.學校,B.職業 from A,B where A.姓名=B.姓名 含義:結果顯示表A的姓名和學校,表B的職業,從A,B表中查詢,查詢條件是表A的姓名等于表B的姓名。 實現方式二: select A.姓名,A.學校,B.職業 from A inner join B on A.姓名=B.姓名 含義:表A內連接表B,內連接條件是表A的姓名等于表B的姓名。 注:內連接的結果只顯示表A和表B共同擁有的姓名的行,姓名不相同的舍棄。 2.外連接:是對內連接的擴充,顯示不匹配的數據。 1).左外連接(left join 或 left outer join):結果保留左表的所有行,如果左表的某一行在右表中沒有匹配行,則將為右表的返回空值,否則返回相應值。 例子:在表A和表B中使用左外連接查詢學生姓名,學校和職業。 select A.姓名,A.學校,B.姓名,B.職業 from A left join B on A.姓名=B.姓名 含義:結果顯示出左邊A表的所有姓名行數,B表中沒有匹配的姓名,姓名和職業就顯示為空值(null)。 2).右外連接(right join 或right outer join):與左外連接相反,結果返回右表的所有行,如果右表的某一行在左表中沒有匹配行,則將為左表的返回空值,否則返回相應值。 例子:在表A和表B中使用右外連接查詢學生姓名,學校和職業。 select A.姓名,A.學校,B.姓名,B.職業 from A right join B on A.姓名=B.姓名 含義:結果顯示出右邊B表的所有姓名行數,A表中沒有匹配的姓名,姓名和學校就顯示為空值(null)。 3).全連接/完整外連接(full join 或 full outer join):結果返回左表和右表的所有行,當某一行在另一個表中沒有匹配行時,另一個表返回值就為空值,否則返回相應值。 例子:在表A和表B中使用右外連接查詢學生姓名,學校和職業。 select A.姓名,A.學校,B.姓名,B.職業 from A full join B on A.姓名=B.姓名 含義:結果顯示出A和B表的所有姓名行數,A表中沒有匹配B表中的姓名,A的姓名和學校就顯示為空值(null)。B表中沒有匹配A表中的姓名,B的姓名和職業就顯示為空值(null)。 3.交叉連接(cross join):是表之間沒有任何關聯條件,查詢的結果是返回左表的每一行與右表的每一行挨個連接組合,相當于相乘。應用的場合較少,作為了解。 例子:在表A和表B中使用交叉連接查詢學生姓名,學校和職業。 select A.姓名,A.學校,B.姓名,B.職業 from A full join B 含義:A表中的每一行都和B表中的每一行組合成為新行,結果總行數等于A的行數乘以B的行數。