1、第 12 课 学生信息管理系统数据完整性实现 1.什么是数据的完整性?数据的完整性分为哪几类?答: 数据完整性是指存储在数据库中的数据的一致性和准确性。数据的完整性可分为四种类型:实体完整性、域完整性、参照完整性和用户定义的完整性。2.什么是约束?请分别说明各种不同类型约束的含义。 答: 约束是一种强制数据完整性的标准机制,使用约束可以确保在字段中输入有效数据并维护各表之间的关系。SQL Server 支持下列五类约束:主键约束(PRIMARY KEY)。确保在特定的列中不会输入重复的值,并且在这些列中也不允许输入 NULL 值。可以使用主键约束强制完整性。唯一性约束(UNIQUE)。不允许数
2、据库表在指定列上具有相同的值,但允许有空值,确保在非主键列中不输入重复值。检查约束(CHECK)。通过条件表达式判断限制插入到列中的值,以强制执行域的完整性。默认值约束(DEFAULT)。当数据库表中插入数据时,如果没有明确的提供输入值时,SQL Server 自动为该列输入默认值。外键约束(FOREIGN KEY)。定义数据库表中指定列上插入或更新的数值,必须在另一张被参照表中的特定列上存在,约束表与表之间的关系,强制参照完整性。 3.如何创建和删除各种类型的约束,请写出其 SQL 语句的格式。 答: 创建主键约束ALTER TABLE table_nameADD CONSTRAINT co
3、nstraint_name PRIMARY KEY(column) 创建唯一性约束ALTER TABLE table_nameADD CONSTRAINT constraint_name UNIQUE (column)创建检查约束ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK logical_expression? 创建默认值约束ALTER TABLE table_name ADD CONSTRAINT constraint_name? DEFAULT constraint_expression FOR column_na
4、me创建外键约束ALTER TABLE table_nameADD CONSTRAINT constraint_name FOREIGNKEY column_name REFERENCES ref_table(ref_column_name) 删除约束ALTER TABLE table_nameDROP CONSTRAINT constraint_name,n4.简述默认和规则的概念与应用。 答: 默认与在约束中介绍的 DEFAULT 默认约束的作用一样,也可以实现当用户在向数据库表中插入一行数据时,如果没有明确的给出某列的输入值时,则由 SQL Server 自动为该列输入默认值。但与 DE
5、FAULT 默认约束不同的是,默认是一种数据库对象,在数据库中只需定义一次后,就可以被一次或多次应用于任意表中的一列或多列,还可以用于用户定义的数据类型。规则用来定义表中某列可以输入的有效值范围,当用户输入的数据不在规定的范围内,就会提醒用户输入有误,从而确保输入数据的正确性。规则与 CHECK 约束的作用是相同的。但与 CHECK 约束不同的是,规则是一种数据库对象,在数据库中只需定义一次后,就可以被一次或多次绑定到任意表中某列,限制列值。规则的使用方法类似默认,同样包括创创建、绑定、解绑和删除。5.写出 T-SQL 语句,对 STUMS 数据库进行如下操作: 1.在 STUMS 数据库中,
6、为学生基本信息表的“系部代码”创建外键约束 fk_xs_xb_xbdm;为“入学时间”创建检查约束 ck_xs_rxsj,确保入学时间大于出生日期,小于计算机系统的日期。答: ALTER TABLE 学生基本信息ADD CONSTRAINT fk_xs_xb_xbdmFOREIGN KEY(系部代码)REFERENCES 系部(系部代码)GOALTER TABLE 学生基本信息ADD CONSTRAINT ck_xs_rxsjCHECK(入学时间出生日期 AND 入学时间GETDATE())GO2.在 STUMS 数据库中创建 zzmm_default 默认,将其分别绑定到学生基本信息表和教师
7、表的“政治面貌”字段上,政治面貌的默认值为共产党员。答: CREATE DEFAULT zzmm_defaultAS 共产党员GO EXEC sp_bindefault zzmm_default,教师.政治面貌EXEC sp_bindefault zzmm_default,学生基本信息.政治面貌GO3.在 STUMS 数据库中创建 xbdm_rule 规则,将其绑定到系部表的系部代码字段上,用来保证输入的系部代码只能是数字字符。答: CREATE RULE xbdm_ruleAS xbdm LIKE? 0-90-9GOEXEC sp_bindrule xbdm_rule, 系部.系部代码GO4.查看 zzmm_default 默认和 xbdm_rule 规则的定义信息。答: EXEC sp_helptext zzmm_defaulEXEC sp_helptext xbdm_rule