如何定义数据完整性(sql 主键约束)

关系模型带来的最大优点之一就是模型本身集成了数据完整性。

作为模型的一部分而实施的数据完整性(也就是说,作为表定义的一部分)称为声明式数据完整性。用代码来实施的数据完整性(例如:用存储过程或触发器)称为过程式数据完整性

为属性选择的数据类型和是否允许为NULL值,甚至数据模型本身都是声明式数据完整性约束的例子。本文给大家主要介绍声明式约束的例子,包括主键、唯一约束(UNIQUE)外键、检查约束(CHECK),以及默认约束(DEFAULT)。

当用 CREATE TABLE 语句创建表时,可以同时定义这些约束;或者在已经创建好表之后,用 ALTER TABLE 语句增加这些约束。除了默认约束(DEFAULT)约束以外,其他所有约束都可以定义为组合约束(即基于一个或多个属性的约束)。

主键约束(Primary Key Constrints)

主键约束实施行的唯一约束,同时不允许约束属性取NULL值。约束属性中每一组唯一的值在表中只能出现一次,换句话说,表内的每行数据可以被唯一确定。每个表只能定义一个主键。

以前篇文章中创建的Employees表为例,在它的empid列上定义一个主键约束:

ALTER TABLE dbo.Employees

ADD CONSTRAINT PK_Employees

PRIMARY KEY(empid);

定义好主键以后,就可以保证所有的empid值是唯一而确定的。如果插入或更新一行违反约束的数据,RDBMS就会拒绝操作,生成一个报错。

为了实施逻辑主键约束的唯一约束,SQL Server 将在幕后创建一个唯一索引(unique index)。唯一索引是SQL Server为了实施唯一约束而采用的一种物理机制。也可以用索引(不一定是唯一索引)来加速查询的处理,避免对整个表进行不必要的扫描。

作者:shy

如何定义数据完整性(sql 主键约束)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论