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

下載本文檔

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

文檔簡(jiǎn)介

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

2、編號(hào)就是一個(gè)主鍵;成績(jī)表(學(xué)號(hào),課程號(hào),成績(jī)成績(jī)表中單一一個(gè)屬性無(wú)法唯一標(biāo)識(shí)一條記錄,學(xué)號(hào)和課程號(hào)的組合才可以唯一標(biāo)識(shí)一條記錄,所以,學(xué)號(hào)和課程號(hào)的屬性組是一個(gè)主鍵。成績(jī)表中的學(xué)號(hào)不是成績(jī)表的主鍵,但它和學(xué)生表中的學(xué)號(hào)相對(duì)應(yīng),并且學(xué)生表中的學(xué)號(hào)是學(xué)生表的主鍵,則稱成績(jī)表中的學(xué)號(hào)是學(xué)生表的外鍵;同理,成績(jī)表中的課程號(hào)是課程表的外鍵。定義主鍵和外鍵主要是為了維護(hù)關(guān)系數(shù)據(jù)庫(kù)的完整性,總結(jié)一下:一、主鍵是能確定一條記錄的唯一標(biāo)識(shí),比如,一條記錄包括身份正號(hào),姓名,年齡。身份證號(hào)是唯一能確定你這個(gè)人的,其他都可能有重復(fù),所以,身份證號(hào)是主鍵。外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持

3、數(shù)據(jù)的一致性。比如,A 表中的一個(gè)字段,是B表的主鍵,那他就可以是A表的外鍵。二、主鍵、外鍵和索引的區(qū)別定義:主鍵-唯一標(biāo)識(shí)一條記錄,不能有重復(fù)的,不允許為空外鍵-表的外鍵是另一表的主鍵, 外鍵可以有重復(fù)的, 可以是空值索引-該字段沒(méi)有重復(fù)值,但可以有一個(gè)空值作用:主鍵-用來(lái)保證數(shù)據(jù)完整性外鍵-用來(lái)和其他表建立聯(lián)系用的索引-是提高查詢排序的速度個(gè)數(shù):主鍵-主鍵只能有一個(gè)外鍵-一個(gè)表可以有多個(gè)外鍵索引-一個(gè)表可以有多個(gè)唯一索引創(chuàng)建SQL的主鍵和外鍵約束的方法:create table Student -建表格式:create table 自定義的表名(-字段名一般為有一定意義的英文Student

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

5、RENCES SchoolTable(SchoolName, -加外鍵約束,格式:FOREIGN KEY REFERENCES 關(guān)聯(lián)的表名(字段名StudentAge int DEFAULT(0,-加默認(rèn)值約束StudentSex nvarchar(2CHECK(StudentSex=N男or StudentSex=N女-加檢查約束,格式:check (條件表達(dá)式-如果在表創(chuàng)建好了以后再加約束,則格式分別為:- 主鍵:alter table表名add constraint PK_字段名-PK為主鍵的縮寫,字段名為要在其上創(chuàng)建主鍵的字段名,PK_字段名就為約束名primary key(字段名-字

6、段名同上-唯一約束: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 add constraint FK_B foreign key(ticket_noreferences 表B(ticket_noalter table表A add constraint FK_C foreign key(person_noreferences 表

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

8、默認(rèn)值for字段名-其中的默認(rèn)值為你想要默認(rèn)的值,注意for-刪除創(chuàng)建的約束:alter table表名drop constraint約束名-約束名為你前面創(chuàng)建的如:PK_字段這樣的約束名-注意:如果約束是在創(chuàng)建表的時(shí)候創(chuàng)建的,則不能用命令刪除-只能在企業(yè)管理器里面刪除- 獲取SqlServer中表結(jié)構(gòu)SELECT ,,syscolumns.isnullable, syscolumns.lengthFROM syscolumns,systypesWHERE syscolumns.xusertype = systypes.xusertype

9、AND syscolumns.id =OBJECT_ID(Student- 單獨(dú)查詢表遞增字段SELECT name FROM syscolumns WHEREid =OBJECT_ID(NStudentAND COLUMNPROPERTY(id,name,IsIdentity=1- 獲取表主外鍵約束EXEC sp_helpconstraintStuResults- 查詢表主鍵外鍵信息SELECT sysobjects.id objectId,OBJECT_NAME(sysobjects.parent_obj tableName, constraintName, sysobjects.xtype AS constraintType, AS columnNameFROM sysobjects INNER JOIN sysconstraintsON sysobjects.xtype in(C,F,PK,UQ,DAND sys

溫馨提示

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

評(píng)論

0/150

提交評(píng)論