第5章约束、默认和规则 5.1数据完整性 5.2约束 5.3默认 54规贝
第5章 约束、默认和规则 5.1 数据完整性 5.2 约束 5.3 默认 5.4 规则
5.1数据完整性 数据库应用程序开发中的一个重要步驟就是设计和 第 5实施数据的完整性,并确定实施数据完整性的最佳方 章约束 案 数据完整性是指数据库中数据的正确性和一致性, 是衡量数据库质量的一个重要标准。在使用 INSERT 默 UPDATE和 DELETE命令修改数据库中的数据时,数 认 和 据的完整性可能被破坏,如插入了一个不存在学生的 规成绩,或将学生的班号修改为一个不存在的班级等 则通过定义数据完整性规则, SQL ServerI可以通过自身 提供的完整性规则有效地管理数据的输入,而不必使 用额外的应用程序来协助管理,这样一方面可以节省 系统开销,另一方面将使数据库中的数据独立于应用 程序,使创建开放式数据库系统成为可能
5.1 数据完整性 数据库应用程序开发中的一个重要步骤就是设计和 实施数据的完整性,并确定实施数据完整性的最佳方 案。 数据完整性是指数据库中数据的正确性和一致性, 是衡量数据库质量的一个重要标准。在使用INSERT、 UPDATE和DELETE命令修改数据库中的数据时,数 据的完整性可能被破坏,如插入了一个不存在学生的 成绩,或将学生的班号修改为一个不存在的班级等。 通过定义数据完整性规则,SQL Server可以通过自身 提供的完整性规则有效地管理数据的输入,而不必使 用额外的应用程序来协助管理,这样一方面可以节省 系统开销,另一方面将使数据库中的数据独立于应用 程序,使创建开放式数据库系统成为可能。 第 5 章 约 束 、 默 认 和 规 则
5.1数据完整性 5.1.1域完整性 域完整性是指给定列的输入有效性。强制域 约有效性的方法有:通过限制数据类型(包括自 束 定义数据类型)、格式( CHECK约束和规则)或 默犬 认 可能的取值范围( FOREIGN KEY约束、 CHECK约 和束、 DEFAULT定义、 NOT NULL定义和规则)来 则实现 如:性别字段只能取“男”或“女”;课程 成绩取值范围为0∽100;姓名字段不能为空; 性别字段的默认值为“男”等等。 ○
5.1 数据完整性 5.1.1 域完整性 域完整性是指给定列的输入有效性。强制域 有效性的方法有:通过限制数据类型(包括自 定义数据类型)、格式(CHECK约束和规则)或 可能的取值范围(FOREIGN KEY约束、CHECK约 束、DEFAULT定义、NOT NULL定义和规则)来 实现。 如:性别字段只能取“男”或“女”;课程 成绩取值范围为0∽100;姓名字段不能为空; 性别字段的默认值为“男”等等。 第 5 章 约 束 、 默 认 和 规 则
5.1数据完整性 5.1.2实体完整性 最实体完整性是指表中的每一行必须是惟一的 约实体完整性强制表中的所有记录都有一个惟 束 的标识列,这个惟一标识列可能是一列,也可 閃能有若干列的组合。强制实体完整性的方法有 和 UNIQUE约束、 PRIMARY KEY约束或 则 IDENTITY属性 如:在学生情况表中,学生的学号是惟一的 它与每个学生一一对应;成绩表中,学号+课 程号是惟一的,它与每个学生的每门课相对应
5.1 数据完整性 5.1.2 实体完整性 实体完整性是指表中的每一行必须是惟一的。 实体完整性强制表中的所有记录都有一个惟一 的标识列,这个惟一标识列可能是一列,也可 能有若干列的组合。强制实体完整性的方法有: UNIQUE 约 束 、 PRIMARY KEY 约束或 IDENTITY属性。 如:在学生情况表中,学生的学号是惟一的, 它与每个学生一一对应;成绩表中,学号+课 程号是惟一的,它与每个学生的每门课相对应。 第 5 章 约 束 、 默 认 和 规 则
5.1数据完整性 第5章约束 5.1.3参照完整性 参照完整性确保数据库中数据的一致性。在SQL Server中,参照完整性基于外键(引用表)与主键 (被引用表)之间或外键与惟一键之间的关系(通过 和 FOREIGN KEY和 CHECK约束)。通过外键将引用 规表和被引用表关联起来。参照完整性通过已定义的表 则 间关系,确保键值在所有表中都必须一致,因此不能 引用不存在的值(即指向不存在的行)。如果在被引 用的表中,某一记录被外部键引用,则该记录就不能 删除;若需要更改键值,那么在整个数据库中,对该 键值的所有引用都要进行一致的更改,以保证数据的 参照完整性
5.1 数据完整性 5.1.3 参照完整性 参照完整性确保数据库中数据的一致性。在SQL Server中,参照完整性基于外键(引用表)与主键 (被引用表)之间或外键与惟一键之间的关系(通过 FOREIGN KEY和 CHECK约束)。通过外键将引用 表和被引用表关联起来。参照完整性通过已定义的表 间关系,确保键值在所有表中都必须一致,因此不能 引用不存在的值(即指向不存在的行)。如果在被引 用的表中,某一记录被外部键引用,则该记录就不能 删除;若需要更改键值,那么在整个数据库中,对该 键值的所有引用都要进行一致的更改,以保证数据的 参照完整性。 第 5 章 约 束 、 默 认 和 规 则
5.1数据完整性 第 5.1.4用户定义完整性 用户可以根据需要,可以在 SQL Server中定义不属 于上述标准类别的特定规则的用户完整性定义。所有 约 束的完整性类型都支持用户自定义完整性( CREATE 默犬 TABLE中的所有列级和表级约東、存储过程和触发 认器 和规则 5.1.5数据完整性的实现方法 在 SQL Server中,有两种方式可以实现数据完整性 声明型数据完整性; 过程型数据完整性。 ○
5.1 数据完整性 5.1.4 用户定义完整性 用户可以根据需要,可以在SQL Server中定义不属 于上述标准类别的特定规则的用户完整性定义。所有 的完整性类型都支持用户自定义完整性(CREATE TABLE中的所有列级和表级约束、存储过程和触发 器)。 5.1.5 数据完整性的实现方法 在SQL Server中,有两种方式可以实现数据完整性: l 声明型数据完整性; l 过程型数据完整性。 第 5 章 约 束 、 默 认 和 规 则
5.2约束 第 建立和使用约束的目的在于保证数据的完 5整性,设计表时需要定义列的有效值并通过 的列中数据、行中数据及表间数据决定如何强制 保证数据的完整性,约束定义关于列中允许值 默的规则,是强制完整性的首选方法。 规 约束是独立于表结构的,它作为数据库定 则义的一部分在创建表时声明,可以通过企业管 理器或 ALTER TABLE语句添加或删除。当表 被删除时,表所附带的所有约束同时被删除
5.2 约束 建立和使用约束的目的在于保证数据的完 整性,设计表时需要定义列的有效值并通过 列中数据、行中数据及表间数据决定如何强制 保证数据的完整性,约束定义关于列中允许值 的规则,是强制完整性的首选方法。 约束是独立于表结构的,它作为数据库定 义的一部分在创建表时声明,可以通过企业管 理器或ALTER TABLE语句添加或删除。当表 被删除时,表所附带的所有约束同时被删除。 第 5 章 约 束 、 默 认 和 规 则
5.2约束 则5.2.1约束的类型 约·域完整性( NOT NULL、 DEFAULT CHECK 默犬 ·实体完整性( PRIMARY KEY、 UNIQUE) 和 圳·参考完整性( FOREIGN KEY ○
5.2 约束 5.2.1 约束的类型 • 域完整性 (NOT NULL 、 DEFAULT 、 CHECK ) • 实体完整性(PRIMARY KEY、UNIQUE ) • 参考完整性(FOREIGN KEY ) 第 5 章 约 束 、 默 认 和 规 则
5.2约束 522 NOT NULL约東 第5章约束 NOT NULL约束又称非空约束,表示使用该约束的列不允许 使用空值。若该列是主键,则系统强制主键列为非空约束,而 其它列的非空约束必须根据需要加以设置 非空约束可以在 CREATE TABLE建表时实现,在表创建完成后 也可以使用修改列属性的TSQL语句完成 默犬 ALTER TABLE table name 认 和 ALTER COLUMN column name new data type I NULL 规| NOT NULL] 则 【例5-1】将学生信息表( Student)中的学生姓名列强制 非空约束 可以通过修改列属性的方法完成: ALTER TABLE Student ALTER COLUMN StudentName VARCHAR(10) NOT NULL ○
5.2 约束 5.2.2 NOT NULL约束 NOT NULL约束又称非空约束,表示使用该约束的列不允许 使用空值。若该列是主键,则系统强制主键列为非空约束,而 其它列的非空约束必须根据需要加以设置。 非空约束可以在CREATE TABLE建表时实现,在表创建完成后, 也可以使用修改列属性的T-SQL语句完成: ALTER TABLE table_name ALTER COLUMN column_name new_data_type [ NULL | NOT NULL ] 【例5-1】 将学生信息表(Student)中的学生姓名列强制 非空约束。 可以通过修改列属性的方法完成: ALTER TABLE Student ALTER COLUMN StudentName VARCHAR(10) NOT NULL 第 5 章 约 束 、 默 认 和 规 则
5.2约束 5.2.3 DEFAULT约束 第 当表中的某列必须有值,并且当使用 INSERT命令向数据表 章插入记录数据时,若用户没有明确指定该列的值,该列也需要 约有一个明确值的情况下,就需要使用 DEFAULT约束 束 使用了 DEFAULT约束的列, SQL Server将根据用户的插入 默数据,自动维护域完整性:当用户插入时该列有指定值,则该 认列使用该值插入,否则使用 DEFAULT约束中指定的默认值。 和规则 DEFAULT约束可以使用以下方法实现: 作为表定义的一部分在创建表时创建。 添加到现有表中; 删除现有的 DEFAULT定义。 ALTER TABLE Student/添加 DEFAULT约束 ADD CONSTRAINT Default Sex DEFAULT ' FOR Sex
5.2 约束 5.2.3 DEFAULT约束 当表中的某列必须有值,并且当使用INSERT命令向数据表 插入记录数据时,若用户没有明确指定该列的值,该列也需要 有一个明确值的情况下,就需要使用DEFAULT约束。 使用了DEFAULT约束的列,SQL Server将根据用户的插入 数据,自动维护域完整性:当用户插入时该列有指定值,则该 列使用该值插入,否则使用DEFAULT约束中指定的默认值。 DEFAULT约束可以使用以下方法实现: l 作为表定义的一部分在创建表时创建。 l 添加到现有表中; l 删除现有的 DEFAULT 定义。 ALTER TABLE Student /* 添加DEFAULT约束 */ ADD CONSTRAINT Default_Sex DEFAULT '男' FOR Sex 第 5 章 约 束 、 默 认 和 规 则