SQL Server 資料表程式碼建立約束

幽靜de風發表於2018-06-13
約束
非空約束 –NN,ont null constraint
必須填寫資料不能為空
–指定表 Student 新增名為NN_Student_sClassId非空約束(指定列名sClassId),括號輸入表示式
alter table Student add constraint NN_Student_sClassId check(sClassId is not null)
 
主鍵約束 –PK,primary key constraint
唯一且不為空
–指定表 Student 新增名為PK_Student_sId主鍵約束(指定列名sId)
alter table Student add constraint PK_Student_sId primary key(sId)
 
唯一約束 –UQ,unique constraint
唯一,允許為空,但是同樣的資料只能出現一次
–指定表 Student 新增名為UQ_Student_sName唯一約束(指定列名sName)
alter table Student add constraint UQ_Student_sName unique(sName)
    
預設約束 —DF,default constraint
設定預設值
–指定表 Student 新增名為DF_Student_sName預設約束(指定列名sBirthday),獲取當前日期
alter table Student add constraint DF_Student_sName default(getdate()) for sBirthday
 
–指定表 Student 新增名為DF_Student_sName預設約束(指定列名sBirthday),指定日期  
alter table Student add constraint DF_Student_sName default(`1995-12-12`) for sBirthday  
–指定表 Student 新增名為DF_Student_sName預設約束(指定列名sSex),指定性別
alter table Student add constraint DF_Student_sSex default(`男`) for sSex     
 
檢查約束 –CK,check constraint
設定範圍以及格式限制
–指定表 Student 新增名為 CK_Student_sSex檢查約束(指定列名sSex),限制為`男`或者`女`
alter table Student add constraint CK_Student_sSex check(sSex=`男` or sSex=`女`)   
–指定表 Student 新增名為 CK_Student_sSex檢查約束(指定列名sAge),限制為0-100之間的數字
alter table Student add constraint CK_Student_sAge check(sAge>=0 and sAge<=100)   
 
外來鍵約束  –FK,foreign key constraint
表關係
alter table Student add constraint Fk_Student_sClassId foreign key(sClassId) references Class(cId)
–指定表Student新增sClassId外來鍵為Class的主鍵cId
on delete cascade on update  cascade –級聯刪除 –級聯更新
 
刪除約束
alter table Student drop Constraint NN_Student_sClassId    –刪除指定表中的約束
 
建立表時設定列的約束
create table Users
(
     uId int identity(1,1) primary key,–建立了一個列名為 uId的列,並設定了主鍵約束
     uName nvarchar(8) not null unique,建立了一個列名為uName的列,並設定了唯一約束
     uSex nchar(1) not null check(uSex=`男` or uSex=`女`) default(`男`),–設定了非空和預設約束
     uBirthday datetime,–建立了一個列名為uBirhday的列,並沒有設定約束
     uAge int not null check(uAge>0 and uAge<100) default(18),–設定了非空、檢查、預設約束
 )

相關文章