SqlServer--代碼創建約束



約束-保證數據完整性

數據庫約束是為了保證數據的完整性(正確性)而實現的一套機制。當創建了主外鍵關系后,如果在外鍵表中有任何記錄引用了主鍵表中的某條記錄,則在主鍵表中不能刪除該記錄。同時主鍵表也不能刪除。

注意:創建約束時,如果表中已經存在“非法數據”(與約束不一致的數據),那么此時是無法成功創建約束的,需要先將表中的數據做更改,然后才能創建約束。

 

非空約束 (選擇復選框)not null
主鍵約束(PK)primary key constraint唯一且不為空(選中列,右鍵,設為主鍵)
唯一約束(UQ)unique constraint唯一,允許為空,但只能出現一次(右鍵,索引/鍵,添加)
默認約束(DF)default constraint 默人值(選中列,設置列的默認綁定值)
檢查約束(CK)check constraint 范圍以及格式限制(右鍵check約束,添加)
外鍵約束(FK)foreign key constraint表關系(在外鍵表,右鍵,關系,增加一個主外鍵關系)
增加外鍵約束時,設置級聯更新、級聯刪除:

on delete cascade
on update cascade

 

--通過t-sql語句來創建約束

--新建一張表:員工信息表

create table Employees

(

EmpId int identity(1,1),

EmpName varchar(50),

EmpGender char(2),

EmpAge int,

EmpEmail varchar(100),

EmpAddress varchar(500)

)

 

 

create table Department

(

DepId int identity(1,1) ,

DepName varchar(50)

)

 

 

-----------------------手動刪除、修改、增加 列-----------------------------------------------

--手動刪除一列(刪除EmpAddress列)

alter table Employees drop column EmpAddress

--手動增加一列(增加一列EmpAddr varchar(1000))

alter table Employees add EmpAddr nvarchar(1000)

--手動修改一下EmpEmail的數據類型(varchar(200))

alter table Employees alter column EmpEmail varchar(200)

---------------------------------手動增加、修改、刪除 約束-------------------------------------------

--為EmpId增加一個主鍵約束

alter table Employees add constraint PK_Employees_EmpId primary key(EmpId)

--非空約束,為EmpName增加一個非空約束 not null(修改列)

alter table Employees alter column EmpName varchar(50) not null

--為EmpName增加一個唯一約束

alter table Employees add constraint UQ_Employees_EmpName unique(EmpName)

--為性別增加一個默認約束,默認為'男'

alter table Employees add constraint DF_Employees_EmpGender default('男') for EmpGender

--為性別增加一個檢查約束,要求性別只能是:'男' or '女'

alter table Employees add constraint CK_Employees_EmpGender check(EmpGender='男' or EmpGender='女')

--為年齡增加一個檢查約束:年齡必須在-120歲之間,含歲與歲。

alter table Employees add constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120)

 

--創建一個部門表,然后為Employee表增加一個DepId列。

alter table Employees add EmpDepId int not null

--為Department表設置主鍵。主鍵列是:DepId

alter table Department add constraint PK_Department_DepId primary key(DepId)

--增加外鍵約束 

alter table Employees add constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId)    on delete cascade

--增加外鍵約束 ,同時 添加級聯刪除

alter table Employees add constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId)    on delete cascade

--刪除單個約束

alter table Employees drop constraint FK_Employees_Department

--一次刪除多個約束

alter table Employees drop constraint

FK_Employees_Department,

CK_Employees_EmpAge,

CK_Employees_EmpGender,

DF_Employees_EmpGender,

UQ_Employees_EmpName

 

--一次增加多個約束

alter table Employees add

constraint FK_Employees_Department foreign key(EmpDepId) references Department(DepId),

constraint CK_Employees_EmpAge check(EmpAge>=0 and EmpAge<=120),

constraint CK_Employees_EmpGender check(EmpGender='男' or EmpGender='女')

 

---創建表的同時就為表增加約束

create table Employees

(

EmpId int identity(1,1) primary key,

EmpName varchar(50) not null unique check(len(EmpName)>2),

EmpGender char(2) default('男'),

EmpAge int check(EmpAge>0 and EmpAge<120),

EmpEmail varchar(100) unique,

EmpAddress varchar(500) not null,

EmpDepId int foreign key references Department(DepId) on delete cascade

)

 

create table Department

(

DepId int identity(1,1) primary key,

DepName varchar(50) not null unique

)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM