




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SQL的主鍵和外鍵約束 SQL的主鍵和外鍵的作用: 外鍵取值規(guī)則:空值或參照的主鍵值。(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。(2)更新時,不能改為主鍵表中沒有的值。(3)刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯(lián)刪除還是拒絕刪除。(4)更新主鍵記錄時,同樣有級聯(lián)更新和拒絕執(zhí)行的選擇。簡而言之,SQL的主鍵和外鍵就是起約束作用。 關系型數據庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為一個主鍵。比如:學生表(學號,姓名,性別,班級)
2、60; 其中每個學生的學號是唯一的,學號就是一個主鍵;課程表(課程編號,課程名,學分) 其中課程編號是唯一的,課程編號就是一個主鍵;成績表(學號,課程號,成績) 成績表中單一一個屬性無法唯一標識一條記錄,學號和課程號的組合才可以唯一標識一條記錄,所以,學號和課程號的屬性組是一個主鍵。 成績表中的學號不是成績表的主鍵,但它和學生表中的學號相對應,并且學生表中的學號是學生表的主鍵,則稱成績表中的學號是學生表的外鍵;同理,成績表中的課程號是課程表的外鍵。 定義主鍵和外
3、鍵主要是為了維護關系數據庫的完整性,總結一下:一、主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。外鍵用于與另一張表的關聯(lián)。是能確定另一張表記錄的字段,用于保持數據的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。 二、主鍵、外鍵和索引的區(qū)別 定義: 主鍵-唯一標識一條記錄,不能有重復的,不允許為空 外鍵-表的外鍵是另一表的主鍵, 外鍵可以有重復的, 可以是空值 索引-該字段沒有重復值,但可以有一個空值
4、60;作用: 主鍵-用來保證數據完整性 外鍵-用來和其他表建立聯(lián)系用的 索引-是提高查詢排序的速度 個數: 主鍵-主鍵只能有一個 外鍵-一個表可以有多個外鍵 索引-一個表可以有多個唯一索引 創(chuàng)建SQL的主鍵和外鍵約束的方法: create table Student -建表格式:create table 自定義的表名( -字段名一般為有一定意義的英文StudentName nvarchar(15),
5、- 格式:字段名類型()括號里面的是允許輸入的長度StudentAge int, -int型的后面不需要接長度StudentSex nvarchar(2) -最后一個字段后面不要逗號) -在創(chuàng)建表時就可以對字段加上約束:create table Student(StudentNo int PRIMARY KEY IDENTITY(1,1), -加主鍵約束,還有標識列屬性(兩者構成實體完整性)StudentName nvarchar(15) not
6、 null, -加非空約束,不加"not null" 默認為:可以為空StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), -加外鍵約束,格式:FOREIGN KEY REFERENCES 關聯(lián)的表名(字段名)StudentAge int DEFAULT (0), -加默認值約束StudentSex nvarchar(2) CHE
7、CK(StudentSex=N'男' or StudentSex=N'女') -加檢查約束,格式:check (條件表達式) -如果在表創(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 關聯(lián)的表名(關聯(lián)的字段名) -注意'關聯(liá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時,成績表中該學生的所有成績都會刪除。 -檢查約束:alter table 表名add constraint CK_字段名check (條件表達式) -條件表達式中的條件用關系運算符連接 -
11、默認值約束:alter table 表名add constraint DF_字段名default '默認值' for 字段名-其中的'默認值'為你想要默認的值,注意'for' -刪除創(chuàng)建的約束:alter table 表名drop constraint 約束名-約束名為你前面創(chuàng)建的如:PK_字段這樣的約束名-注意:如果約束是在創(chuàng)建表的時候創(chuàng)建的,則不能用命令刪除-只能在'企業(yè)管理器'里面刪除
12、; - 獲取SqlServer中表結構SELECT ,,syscolumns.isnullable,syscolumns.lengthFROM syscolumns,systypesWHERE syscolumns.xusertype = systypes.xusertypeAND syscolumns.id = OBJECT_ID('Student') - 單獨查詢表遞增字段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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司聚餐小食堂管理制度
- 公司茶水間物品管理制度
- 公司行政部接待管理制度
- 公司設備音響室管理制度
- 公司財務負責人管理制度
- 公司跨部門協(xié)同管理制度
- 公司食堂水果飲品管理制度
- 寫字樓保安主管管理制度
- 冠心病重病監(jiān)護室設備管理制度
- 擊劍俱樂部銷售管理制度
- 普通地質學課件
- 《冠脈造影流程操作》課件
- 嵐皋縣某鈦磁鐵礦初步詳查設計
- 物業(yè)防盜應急預案
- 2024用于水泥和混凝土中的焚燒飛灰
- 23秋國家開放大學《液壓與氣壓傳動》形考任務1-2參考答案
- 消防泵房閥門更換施工方案
- 生效的法律文書
- 《路由交換技術》部署和實施企業(yè)網絡互聯(lián)(任務2)
- 工程量清單及招標控制價編制服務采購實施方案(技術標)
- 初中畢業(yè)生簡歷模板
評論
0/150
提交評論