1. 程式人生 > >SQL Server 表連線

SQL Server 表連線

資料庫操作中,我們需要的結果可能在兩張表甚至多張表中,這時候就需要表連線操作,多表查詢中的各個表之間的欄位會存在連線,比如主外來鍵關聯,可以使用主外來鍵來關聯每張表。表連線方式有以下幾種:

  1. JOIN: 如果表中有至少一個匹配,則返回行
  2. LEFT JOIN(左連線): 即使右表中沒有匹配,也從左表返回所有的行
  3. RIGHT JOIN(右連線): 即使左表中沒有匹配,也從右表返回所有的行
  4. FULL JOIN(全連線): 只要其中一個表中存在匹配,就返回行

下面用兩個表演示下上面4種連線方式,兩表資料為:
在這裡插入圖片描述
1. JOIN連線:如果表中有至少一個匹配,則返回行


執行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

結果如下,查詢結果集只返回兩表匹配StudentID欄位相同行。
在這裡插入圖片描述

2.LEFT JOIN(左連線): 即使右表中沒有匹配,也從左表返回所有的行


執行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

結果如下,查詢結果集只返回右表所有行,左表只返回與右表匹配行。
在這裡插入圖片描述

3. RIGHT JOIN(右連線): 即使左表中沒有匹配,也從右表返回所有的行
執行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

結果如下,查詢結果集只返回左表所有行,右表只返回與左表匹配行。
在這裡插入圖片描述

4. FULL JOIN(全連線): 只要其中一個表中存在匹配,就返回行
執行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

結果如下,查詢結果集返回兩表的所有行。
在這裡插入圖片描述