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;
動態關鍵字:
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 server2005客戶端組件?
是否啟動了正確的sql server2005實例?
呵呵,希望能有幫助,^_^