约束定义了必须遵循的用于维护数据一致性和正确性的规则,是强制实现数据完整性的主要途径。约束有5种类型:主键约束、唯一性约束、检查约束、默认约束、外键约束(参照约束)。约束可以在以下两个层次上实施:
列级:用户定义的约束只对表中的一列起作用。
表级:用户定义的约束对表中的多列起作用。
1.约束的创建、修改
约束可以用Transact-SQL的CREATE TABLE语句或ALTER TABLE语句来创建。
(1)使用CREATE TABLE语句创建约束
使用CREATE TABLE语句创建约束是在创建表时定义约束,约束是表格定义的一部分。其语法格式为:
CREATE TABLE table_name
( column_name data_type [ [ CONSTRAINT constraint_name ] constraint_type ]
[,…n]
)
其中:
column_name:列的名称。
data_type:列的数据类型。
constraint_name:要创建的约束的名称。若缺省约束名,则SQL Server会自动为约束提供一个名称。
constraint_type:要创建的约束类型。
(2)使用ALTER TABLE语句创建约束
在已有的表上创建、修改约束可以使用ALTER TABLE命令。其语法格式为:
ALTER TABLE table_name
[ WITH CHECK | WITH NOCHECK ]
ADD [ CONSTRAINT constraint_name ] constraint_type
其中,WITH CHECK | WITH NOCHECK代表新加入的约束是否检查表中现有的数据。使用WITH CHECK选项,系统会检查表中现有数据是否满足约束要求,若现有数据不符合约束的要求,SQL Server会返回错误的信息,并拒绝执行增加约束的操作。WHITH NOCHECK选项在创建约束时,不检查表中现有数据。
2.约束的删除
使用ALTER TABLE语句还可删除约束,其语法格式为:
ALTER TABLE table_name
DROP CONSTRAINT constraint_name
这时,只删除了表中的指定约束,并没有删除表。但需注意,当表被删除时,在该表上定义的所有约束将自动取消。