程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> SqlServer2005 >> SQL Server 2005中的外聯結用法

SQL Server 2005中的外聯結用法

編輯:SqlServer2005

SQL Server 2005中的外聯結用法一:

有兩個表:學生表,學生選課表,表中數據為:

學生表:

學生選課表:

要查看所有學生的選課信息,

標准的SQL語句,外聯結語句為

use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L,sc
where L.sno=sc.sno(*)

理論上的結果為:

但是,在SQLServer2005中運行會出現錯誤,錯誤提示為:

消息 102,級別 15,狀態 1,第 4 行
'*' 附近有語法錯誤。 

在SQLServer2005中,相應的T-SQL語句應該為:

use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L left join sc
on L.sno=sc.sno

運行結果為:

同時,還可以在on後面再加上where限定條件:

use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L left join sc
on L.sno=sc.sno
where L.sno in(95001,95002,95003,95004)

這時,運行結果為:

 

以上這個例子是左外聯結查詢,即:結果表中包含第一個表中所有滿足條件的

記錄,如果在第二個表中有滿足聯結條件的記錄,則返回相應的值,否則返回NULL

SQLServer2005中的外聯結查詢用法(續):

有三個表:學生表,學生選課表,課程表,表中數據為:

學生表:

學生選課表:

課程表:

 左聯結查詢舉例:

use stu_course
select L.sno,sname,ssex,sage,sdept,cno,grade
from student L left join sc
on L.sno=sc.sno

結果為:

右聯結查詢舉例:

use stu_course
select sno,course.cno,course.cname
from sc right join course
on sc.cno=course.cno

結果為:

全外聯結查詢舉例:

use stu_course
select sno,course.cno,course.cname
from sc full join course
on sc.cno=course.cno

結果為:

如果將這個全外聯中的左右兩個表交換順序:

use stu_course
select sno,course.cno,course.cname
from course full join sc
on sc.cno=course.cno

結果仍為:

由以上例子可以看出:

       對於左外聯結,結果表中包含第一個表中所有滿足條件的記錄,如果在第二個表中有滿足聯結條件的記錄,則返回相應的值,否則返回NULL; 

       對於右外聯結,結果表中包含第二個表中所有滿足條件的記錄,如果在第一個表中有滿足聯結條件的記錄,則返回相應的值,否則返回NULL; 

       對於全外聯結,結果表中包含兩個表中所有滿足條件的記錄,如果在其中一個表中有滿足聯結條件的記錄,則返回相應的值,否則返回NULL;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved