SQL Server 关键字

添加约束

SQL Server (Transact-SQL) ADD CONSTRAINT 语句用于在已存在的表中创建约束。 ADD CONSTRAINT 关键字主要与 ALTER 语句结合使用。

添加 UNIQUE 约束

对Salary 实施 UNIQUE 约束 表名为Employee的列,语句如下:

ALTER TABLE Employee
ADD UNIQUE (Salary); 

为UNIQUE约束提供名称,并在多个列上定义UNIQUE约束(例如年龄和薪水),语句如下:

ALTER TABLE Employee
ADD CONSTRAINT UC_Employee UNIQUE (Age, Salary); 

添加主键约束

强制执行主键约束在名为 Employee 的表的 EmpID 列上,语句如下:

ALTER TABLE Employee
ADD PRIMARY KEY (EmpID); 

为 PRIMARY KEY 约束提供名称,并且要在多个列上定义 PRIMARY KEY 约束(例如 EmpID 和 Name),语句如下:

ALTER TABLE Employee
ADD CONSTRAINT PK_Employee PRIMARY KEY (EmpID, Name); 

添加 FOREIGN KEY 约束

要对名为 Contact_Info 的表的 EmpID 列强制执行 FOREIGN KEY 约束,语句如下:

ALTER TABLE Contact_Info
ADD FOREIGN KEY (EmpID) 
REFERENCES Employee(EmpID); 

要为 FOREIGN KEY 约束提供名称,并在多个列上定义 FOREIGN KEY 约束,请使用以下语句:

ALTER TABLE Contact_Info
ADD CONSTRAINT FK_Contact_Info 
FOREIGN KEY (EmpID) 
REFERENCES Employee(EmpID); 

下面给出的语句演示如何强制执行 FOREIGN KEY 约束多列(EmpID 和 PersonName)。请注意,Employee 表必须对这些列有 PRIMARY KEY 约束 - EmpID 和 Name。

ALTER TABLE Contact_Info
ADD CONSTRAINT FK_Contact_Info 
FOREIGN KEY (EmpID, PersonName) 
REFERENCES Employee(EmpID, Name); 

添加 CHECK 约束

要对Employee 表的Age 列实施CHECK 约束,语句如下:

ALTER TABLE Employee
ADD CHECK (Age >= 21); 

要为 CHECK 约束提供名称,并在多个列上定义 CHECK 约束(例如 Age 和 City),语句如下:

ALTER TABLE Employee
ADD CONSTRAINT CHK_Employee 
CHECK (Age >= 21 AND City = 'London'); 

添加 DEFAULT 约束

要对名为Employee 的表的City 列实施DEFAULT 约束,语句如下:

/*强制名为DV_City的DEFAULT约束*/
ALTER TABLE Employee
ADD CONSTRAINT DV_City
DEFAULT 'London' FOR City; 

删除 约束

使用 SQL Server (Transact-SQL) DROP CONSTRAINT 语句删除 UNIQUE、PRIMARY KEY、FOREIGN KEY 或 CHECK 约束。

删除 UNIQUE 约束

删除UC_Employee 来自名为 Employee 的表的 UNIQUE 约束,可以使用下面提到的语句:

ALTER TABLE Employee
DROP CONSTRAINT UC_Employee; 

删除 PRIMARY KEY 约束

要删除 PK_Employee 来自名为 Employee 的表的 PRIMARY KEY 约束,语句如下:

ALTER TABLE Employee
DROP CONSTRAINT PK_Employee; 

删除 FOREIGN KEY 约束

删除FK_Contact_Info 来自名为 Contact_Info 的表的 FOREIGN KEY 约束,语句如下:

ALTER TABLE Contact_Info
DROP CONSTRAINT FK_Contact_Info; 

删除 CHECK 约束

要删除 CHK_Employee CHECK来自名为Employee的表的约束,语句如下:

ALTER TABLE Employee
DROP CONSTRAINT CHK_Employee; 

删除 DEFAULT 约束

从名为Employee的表中删除DEFAULT约束,语句如下:

/*删除名为DV_City的DEFAULT约束*/ 
ALTER TABLE Employee
DROP CONSTRAINT DV_City;