SQL的主鍵和外鍵的作用_第1頁
SQL的主鍵和外鍵的作用_第2頁
SQL的主鍵和外鍵的作用_第3頁
SQL的主鍵和外鍵的作用_第4頁
SQL的主鍵和外鍵的作用_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、SQL的主鍵和外鍵約束 SQL的主鍵和外鍵的作用:   外鍵取值規(guī)則:空值或參照的主鍵值。(1)插入非空值時(shí),如果主鍵表中沒有這個(gè)值,則不能插入。(2)更新時(shí),不能改為主鍵表中沒有的值。(3)刪除主鍵表記錄時(shí),你可以在建外鍵時(shí)選定外鍵記錄一起級聯(lián)刪除還是拒絕刪除。(4)更新主鍵記錄時(shí),同樣有級聯(lián)更新和拒絕執(zhí)行的選擇。簡而言之,SQL的主鍵和外鍵就是起約束作用。  關(guān)系型數(shù)據(jù)庫中的一條記錄中有若干個(gè)屬性,若其中某一個(gè)屬性組(注意是組)能唯一標(biāo)識一條記錄,該屬性組就可以成為一個(gè)主鍵。比如:學(xué)生表(學(xué)號,姓名,性別,班級) 

2、60;  其中每個(gè)學(xué)生的學(xué)號是唯一的,學(xué)號就是一個(gè)主鍵;課程表(課程編號,課程名,學(xué)分)    其中課程編號是唯一的,課程編號就是一個(gè)主鍵;成績表(學(xué)號,課程號,成績)    成績表中單一一個(gè)屬性無法唯一標(biāo)識一條記錄,學(xué)號和課程號的組合才可以唯一標(biāo)識一條記錄,所以,學(xué)號和課程號的屬性組是一個(gè)主鍵。 成績表中的學(xué)號不是成績表的主鍵,但它和學(xué)生表中的學(xué)號相對應(yīng),并且學(xué)生表中的學(xué)號是學(xué)生表的主鍵,則稱成績表中的學(xué)號是學(xué)生表的外鍵;同理,成績表中的課程號是課程表的外鍵。 定義主鍵和外

3、鍵主要是為了維護(hù)關(guān)系數(shù)據(jù)庫的完整性,總結(jié)一下:一、主鍵是能確定一條記錄的唯一標(biāo)識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個(gè)人的,其他都可能有重復(fù),所以,身份證號是主鍵。外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性。比如,A表中的一個(gè)字段,是B表的主鍵,那他就可以是A表的外鍵。 二、主鍵、外鍵和索引的區(qū)別 定義: 主鍵-唯一標(biāo)識一條記錄,不能有重復(fù)的,不允許為空 外鍵-表的外鍵是另一表的主鍵, 外鍵可以有重復(fù)的, 可以是空值 索引-該字段沒有重復(fù)值,但可以有一個(gè)空值

4、60;作用: 主鍵-用來保證數(shù)據(jù)完整性 外鍵-用來和其他表建立聯(lián)系用的 索引-是提高查詢排序的速度 個(gè)數(shù): 主鍵-主鍵只能有一個(gè) 外鍵-一個(gè)表可以有多個(gè)外鍵 索引-一個(gè)表可以有多個(gè)唯一索引    創(chuàng)建SQL的主鍵和外鍵約束的方法: create table Student -建表格式:create table 自定義的表名( -字段名一般為有一定意義的英文StudentName nvarchar(15), 

5、- 格式:字段名類型()括號里面的是允許輸入的長度StudentAge int, -int型的后面不需要接長度StudentSex nvarchar(2) -最后一個(gè)字段后面不要逗號) -在創(chuàng)建表時(shí)就可以對字段加上約束:create table Student(StudentNo int PRIMARY KEY IDENTITY(1,1), -加主鍵約束,還有標(biāo)識列屬性(兩者構(gòu)成實(shí)體完整性)StudentName nvarchar(15) not

6、 null, -加非空約束,不加"not null" 默認(rèn)為:可以為空StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), -加外鍵約束,格式:FOREIGN KEY REFERENCES 關(guān)聯(lián)的表名(字段名)StudentAge int DEFAULT (0), -加默認(rèn)值約束StudentSex nvarchar(2) CHE

7、CK(StudentSex=N'男' or StudentSex=N'女') -加檢查約束,格式:check (條件表達(dá)式) -如果在表創(chuàng)建好了以后再加約束,則格式分別為: - 主鍵:alter table 表名add constraint PK_字段名-"PK"為主鍵的縮寫,字段名為要在其上創(chuàng)建主鍵的字段名,'PK_字段名'就為約束名primary key (字段名) -字段名同上 -唯

8、一約束:alter table 表名add constraint UQ_字段名unique (字段名) -外鍵約束:alter table 表名add constraint FK_字段名-"FK"為外鍵的縮寫foreign key (字段名) references 關(guān)聯(lián)的表名(關(guān)聯(lián)的字段名) -注意'關(guān)聯(lián)的表名'和'關(guān)聯(lián)的字段名' alter table 表A

9、60;add constraint FK_B foreign key (ticket_no) references表B(ticket_no)alter table 表A add constraint FK_C foreign key (person_no) references表C(person_no) alter table 成績表 add constraint FK_StudentNo

10、0;foreign key (StudentNo)references Student (StudentNo)ON UPDATE CASCADE ON DELETE CASCADE級聯(lián)更新,級聯(lián)刪除,這樣在刪除主表Student時(shí),成績表中該學(xué)生的所有成績都會刪除。  -檢查約束:alter table 表名add constraint CK_字段名check (條件表達(dá)式) -條件表達(dá)式中的條件用關(guān)系運(yùn)算符連接 -

11、默認(rèn)值約束:alter table 表名add constraint DF_字段名default '默認(rèn)值' for 字段名-其中的'默認(rèn)值'為你想要默認(rèn)的值,注意'for' -刪除創(chuàng)建的約束:alter table 表名drop constraint 約束名-約束名為你前面創(chuàng)建的如:PK_字段這樣的約束名-注意:如果約束是在創(chuàng)建表的時(shí)候創(chuàng)建的,則不能用命令刪除-只能在'企業(yè)管理器'里面刪除  

12、;   - 獲取SqlServer中表結(jié)構(gòu)SELECT ,,syscolumns.isnullable,syscolumns.lengthFROM syscolumns,systypesWHERE syscolumns.xusertype = systypes.xusertypeAND syscolumns.id = OBJECT_ID('Student') - 單獨(dú)查詢表遞增字段SE

13、LECT name FROM syscolumns WHEREid = OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1 - 獲取表主外鍵約束EXEC sp_helpconstraint 'StuResults'  - 查詢表主鍵外鍵信息SELECT sysobjects.id objectId,OBJECT_

14、NAME(sysobjects.parent_obj)tableName, constraintName, sysobjects.xtype AS constraintType, AS columnNameFROM sysobjects INNER JOIN sysconstraintsON sysobjects.xtype in('C', 'F', 'PK', 'UQ', 'D'

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論