多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > SQL 主鍵和外鍵約束

SQL 主鍵和外鍵約束

來源:程序員人生   發布時間:2015-08-13 08:42:02 閱讀次數:4516次

SQL的主鍵和外鍵的作用:

   外鍵取值規則:空值或參照的主鍵值。

(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。

(2)更新時,不能改成主鍵表中沒有的值。

(3)刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄1起級聯刪除還是謝絕刪除。

(4)更新主鍵記錄時,一樣有級聯更新和謝絕履行的選擇。

簡而言之,SQL的主鍵和外鍵就是起束縛作用。

 

 

定義主鍵和外鍵主要是為了保護關系數據庫的完全性,總結1下:

1、主鍵是能肯定1條記錄的唯1標識,比如,1條記錄包括身份正號,姓名,年齡。身份證號是唯1能肯定你這個人的,其他都可能有重復,所以,身份證號是主鍵。

外鍵用于與另外一張表的關聯。是能肯定另外一張表記錄的字段,用于保持數據的1致性。比如,A表中的1個字段,是B表的主鍵,那他就能夠是A表的外鍵。

2、主鍵、外鍵和索引的區分

定義:

主鍵--唯1標識1條記錄,不能有重復的,不允許為空

外鍵--表的外鍵是另外一表的主鍵, 外鍵可以有重復的, 可以是空值

索引--該字段沒有重復值,但可以有1個空值

作用:

主鍵--用來保證數據完全性

外鍵--用來和其他表建立聯系用的

索引--是提高查詢排序的速度

個數:

主鍵--主鍵只能有1個

外鍵--1個表可以有多個外鍵

索引--1個表可以有多個唯1索引

創建SQL的主鍵和外鍵束縛的方法:

create table Student --建表格式:create table 自定義的表名

( --字段名1般為有1定意義的英文

StudentName nvarchar(15), -- 格式:字段名類型()括號里面的是允許輸入的長度

StudentAge int, --int型的后面不需要接長度

StudentSex nvarchar(2) --最后1個字段后面不要逗號

)

--在創建表時就能夠對字段加上束縛:

create table Student

(

StudentNo int PRIMARY KEY IDENTITY(1,1), --加主鍵束縛,還有標識列屬性(二者構成實體完全性)

StudentName nvarchar(15) not null, --加非空束縛,不加"not null" 默許為:可以為空

StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外鍵束縛,格式:FOREIGN KEY REFERENCES 關聯的表名(字段名)

StudentAge int DEFAULT ((0)), --加默許值束縛

StudentSex nvarchar(2) CHECK(StudentSex=N'' or StudentSex=N'') --加檢查束縛,格式:check (條件表達式)

)

--如果在表創建好了以后再加束縛,則格式分別為:

-- 主鍵:

alter table 表名

add constraint PK_字段名--"PK"為主鍵的縮寫,字段名為要在其上創建主鍵的字段名,'PK_字段名'就為束縛名

primary key (字段名) --字段名同上

--唯1束縛:

alter table 表名

add constraint UQ_字段名

unique (字段名)

--外鍵束縛:

alter table 表名

add constraint FK_字段名--"FK"為外鍵的縮寫

foreign key (字段名) references 關聯的表名(關聯的字段名) --注意'關聯的表名''關聯的字段名'

alter table A 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 foreign key (StudentNo) references Student (StudentNo)

ON UPDATE CASCADE ON DELETE CASCADE

級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除。

--檢查束縛:

alter table 表名

add constraint CK_字段名

check (條件表達式) --條件表達式中的條件用關系運算符連接

--默許值束縛:

alter table 表名

add constraint DF_字段名

default '默許值' for 字段名--其中的'默許值'為你想要默許的值,注意'for'

--刪除創建的束縛:

alter table 表名

drop constraint 束縛名--束縛名為你前面創建的如:PK_字段這樣的束縛名

--注意:如果束縛是在創建表的時候創建的,則不能用命令刪除

--只能在'企業管理器'里面刪除

-- 獲得SqlServer中表結構

SELECT syscolumns.name,systypes.name,syscolumns.isnullable,

syscolumns.length

FROM syscolumns,systypes

WHERE syscolumns.xusertype = systypes.xusertype

AND syscolumns.id = OBJECT_ID('Student')

-- 單獨查詢表遞增字段

SELECT [name] FROM syscolumns WHERE

id = OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1

-- 獲得表主外鍵束縛

EXEC sp_helpconstraint 'StuResults'

-- 查詢表主鍵外鍵信息

SELECT sysobjects.id objectId,OBJECT_NAME(sysobjects.parent_obj) tableName,

sysobjects.name constraintName, sysobjects.xtype AS constraintType,

syscolumns.name AS columnName

FROM sysobjects INNER JOIN sysconstraints

ON sysobjects.xtype in('C', 'F', 'PK', 'UQ', 'D')

AND sysobjects.id = sysconstraints.constid

LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id

WHERE OBJECT_NAME(sysobjects.parent_obj)='StuResults'

來源聲明:  chenlaoyang博客   http://blog.csdn.net/chenlaoyang/article/details/8708980

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产丝袜福利视频在线播放 | 国内精品免费视频精选在线观看 | 日韩偷拍自拍 | 在线观看亚洲免费 | 无码日韩精品一区二区免费 | 国产自产c区 | 波多野结衣一二三区 | 一级aa毛片| 被男人吃奶添下面好舒服视频 | 亚洲高清日韩精品第一区 | 中文字幕一区二区三区乱码 | 国产精品久久毛片 | 一区二区视频在线观看免费的 | 日韩欧美一区二区三区不卡 | 超91在线| 亚洲人成影网站~色 | 日本福利片秋霞国产午夜 | 日韩啊v| 久久精品国产亚洲a不卡 | 波多野结衣50连精喷在线 | 欧美激情xxxx性bbbb | 影视先锋av资源噜噜 | 自拍偷拍欧美 | 午夜影院啊啊啊 | 五月丁色| 免费a一毛片 | 欧美日韩国产欧美 | 欧美一级视频免费观看 | 最近中文字幕在线视频 | 欧美日韩亚洲高清不卡一区二区三区 | 波多野结衣与老人公gvg在线 | 在线免费成人网 | 国产激情久久久久影 | 在线亚洲精品国产成人二区 | 亚洲免费观看 | 欧美精品专区第1页 | 一级做a爱过程免费视频日本 | 色人阁在线观看 | www在线观看视频 | 欧美综合色 | 中文字幕乱码中文 |