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

SQL Server 2005中的外聯結用法,sql聯結

編輯:更多數據庫知識

SQL Server 2005中的外聯結用法,sql聯結


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;


sql server 2005的具體用法說明

動態關鍵字:
create 新建 alter 修改 drop刪除 add添加

動態關鍵字後一般給表或數據庫名

如:1.create database 'MyQQData' 新建數據庫 名字為 MyQQData

2.drop table student 刪除學員表

約束關鍵字:
primary 主要的 unique 唯一的 default 默認的 check檢查約束

foreign 外來的(外鍵) references 引文 涉及(引用對象--主鍵)

建庫:

create database '要新建數據庫名'

on primary--主數據庫
(
name='數據庫文件名',
filename='路徑(將數據庫創建到哪裡)+\數據庫物理文件名',

/*如果沒有特殊要求其後的描述可以不要*/
size=數字mb--,--初始大小
filegrowth=數字%,--設置增長量
maxsize=數字mb--最大容量
)
,
(
/*次要數據庫文件,如果沒有則不在主數據庫文件描述完畢後加"," 創建方法一樣*/
name='數據庫文件名',
filename='路徑(將數據庫創建到哪裡)+\數據庫物理文件名',
)

log on--日志文件
(
name='日志文件名',
filename='路徑(將日志文件創建到哪裡)+\日志文件的物理文件名',
)
(
/*日志文件2的具體描述,如果有次要文件就要創建相應的日志文件*/

)

go--有後續語句就得加go
建表:
在S2的T-Sql語句中建表語句是最簡單的 其需用到 create 新建 關鍵字

create table 表名
(
字段 數據類型 非空還可以為空,--可以為空寫關鍵字null 非空在null前加not
/*建標識列*/
字段 數據類型 not null identity(1,1),/*identity關鍵字表明是標識列
前一個1是標識種子後一1是遞增量*/

)
--一般建表後緊跟建約束
/*建約束需奧用到我們的動態關鍵字 alter 修改*/

/*還需用到*/
add /*必須包含add 添加*/ constraint/*約束,也必須包含*/

--固定用法

alter table '表名'
add constraint 約束名 約束類型 約束描述

/*對應約束*/

alter table '表名'
add
--主鍵
constraint PK_字段/*此為命名規范要求*/ primary key(字段),

--唯一約束
constraint UK_字段 unique key(字段),

--默認約束
constrint DF_字段 default('默認值') for/*到*/ 字段,

--檢查約束
constraint CK_字段 check(約束。如:len(字段)>1),

--主外鍵關系
constraint FK_主表_從表 foreign(外鍵字段) references 主表......余下全文>>
 

sql server 2005服務與連接的外圍應用配置器

是否正確安裝了sql server2005客戶端組件?
是否啟動了正確的sql server2005實例?
呵呵,希望能有幫助,^_^
 

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