數(shù)據(jù)庫操作中,我們需要的結(jié)果可能在兩張表甚至多張表中,這時候就需要表連接操作,多表查詢中的各個表之間的字段會存在連接,比如主外鍵關(guān)聯(lián),可以使用主外鍵來關(guān)聯(lián)每張表。表連接方式有以下幾種:
下面用兩個表演示下上面4種連接方式,兩表數(shù)據(jù)為:
1. JOIN連接:如果表中有至少一個匹配,則返回行
執(zhí)行SQL語句:
SELECT stu.ID, stu.StudentID, stu.StudentName, sco.ID, sco.Score, sco.StudentID FROM [BlogDemo].[dbo].[Student] stu Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結(jié)果如下,查詢結(jié)果集只返回兩表匹配StudentID字段相同行。
2.LEFT JOIN(左連接): 即使右表中沒有匹配,也從左表返回所有的行
執(zhí)行SQL語句:
SELECT stu.ID,stu.StudentID,stu.StudentName,sco.ID,sco.Score,sco.StudentID FROM [BlogDemo].[dbo].[Student] stu Left Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結(jié)果如下,查詢結(jié)果集只返回右表所有行,左表只返回與右表匹配行。
3. RIGHT JOIN(右連接): 即使左表中沒有匹配,也從右表返回所有的行
執(zhí)行SQL語句:
SELECT stu.ID, stu.StudentID, stu.StudentName, sco.ID, sco.Score, sco.StudentID FROM [BlogDemo].[dbo].[Student] stu Right Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結(jié)果如下,查詢結(jié)果集只返回左表所有行,右表只返回與左表匹配行。
4. FULL JOIN(全連接): 只要其中一個表中存在匹配,就返回行
執(zhí)行SQL語句:
SELECT stu.ID,stu.StudentID,stu.StudentName,sco.ID,sco.Score,sco.StudentID FROM [BlogDemo].[dbo].[Student] stu FULL Join [BlogDemo].[dbo].[Score] sco On sco.StudentID=stu.StudentID
結(jié)果如下,查詢結(jié)果集返回兩表的所有行。