首页 > 代码库 > Sql Server系列:键和约束

Sql Server系列:键和约束

1. 约束的类型

  约束可以分为3大类:实体约束、域约束和参照完整性约束。

1.1> 实体约束

  实体约束都是关于比较行的,实体约束并不关心整体列中的数据,它只对特定行感兴趣。

1.2> 域约束

  域约束处理一个或多个列,确保一个特定列或一组特定列满足特地的标准。在插入或更新一行时,域约束不考虑其他行。如限定UnitPrice列的值大于或等于0,这就是域约束。

1.3> 参照完整性约束

  如果某列的值必须与其他列(该列可能在同一个表中,或者更通常的是在不同的表中)的值匹配,这就意味着创建了参照完整性约束。

2. 键约束

  常用的键约束包括:主键约束、外键约束和唯一约束(也叫替换键约束)。一个表只能有一个主键约束,可以有多个外键约束和多个唯一约束。

2.1> 主键约束

  主键是每行的唯一标识符,必须包含唯一的值,不能为NULL。一个表可以有多个主键,当然也允许表中不设主键。

  主键约束命名的可参考规则:PK_[table_name]

ALTER TABLE dbo.[Product] ADD CONSTRAINT PK_Product PRIMARY KEY ([ProductID])

  一般情况下主键还会同时创建聚集索引:

ALTER TABLE dbo.[Product] ADD CONSTRAINT PK_Product PRIMARY KEY CLUSTERED ([ProductID])

2.2> 外键约束

  外键能确保数据完整性,也能表现表之间的关系。添加外键之后,插入引用表的记录要么必须与被引用的表列中的某条记录匹配,要么外键列的值设置为NULL。

  外键约束命名的可参考规则:FK_[foreign_key_table_name]_[primary_key_table_name]

  若外键表中存在多个外键字段对同一个主键表的引用,则外键约束的命名可参考规则:FK_[foreign_key_table_name]_[primary_key_table_name]_[colunm_name]

ALTER TABLE dbo.Product ADD CONSTRAINT    FK_Product_Category FOREIGN KEY    (        CategoryID    )    REFERENCES dbo.Category    (       CategoryID    )    ON DELETE  CASCADE

 

Sql Server系列:键和约束