1、数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 1实验 6 数据完整性一、实验目的1掌握 Transact-SQL 语句(CREATE RULE、DROP RULE)创建和删除规则的方法。2掌握系统存储过程 sp_bindrule、sp_unbindrule 绑定和解除绑定规则的操作方法,以及 sp_help、sp_helptext 查询规则信息、sp_rename 更名规则的方法。3掌握 Transact-SQL 语句(CREATE DEFAULT、DROPDEFAULT)创建和删除默认对象的方法。4掌握系统存储过程 sp_bindefault、sp_unbindefault
2、 绑定和解除绑定默认对象的操作方法,以及 sp_helptext 查询规则信息。5掌握 SQL Server 管理平台和 Transact-SQL 语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。二、实验内容和步骤1为 studentsdb 数据库创建一个规则,限制所输入的数据为 7 位 09 的数字。(1)复制学生表命名为 stu_phone,在 stu_phone 表中插入一列,列名为“电话号码” 。完成以下代码实现该操作。SELECT * INTO stu_phone FROM 学生表ALTER TABLE stu_phone ADD CH
3、AR(7)NULLstu_phone 表结构如图 1-10 所示。图 1-10 stu_phone表结构(2)创建一个规则 phone_rule,限制所输入的数据为 7 位 09 的数字。数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 2(3)使用系统存储过程 sp_hndrule 将 phone_rule 规则绑定到 stu_phone 表的“电话号码”列上。(4)插入操作输入以下数据:学号 姓名 电话号码 0009 王国强 1234yyy数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 3是否可以成果插入?不可以如果出现错误,请列出错误信息,为什么会产生该出错
4、信息?消息 213,级别 16,状态 1,第 1 行 插入错误: 列名或所提供值的数目与表定义不匹配。如果要实现插入操作,应修改 INSERT INTO 语句中的哪个值?phone_rule 规则能否对其他操作(如 DELETE)进行规则检查?2创建一个规则 stusex_rule,将其绑定到 stu_phone 表的“性别”列上,保证输入的性别值只能是“男”或“女” 。3使用系统存储过程 sp_help 查询 stusex_rule 规则列表,使用sp_helptext 查询 stusex_rule 规则的文本,使用 sp_rename 将 stusex_rule 规则更名为 stu_s_r
5、ule。数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 4数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 54删除 stu_s_rule 规则。注意:stu_s_ rule 为 stusex_ rule更名后规则名,是否仍然绑定在 stu_phone表的“性别”列上,应如何操作才能删除它。数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 65在 studentdb 数据库中,建立日期、货币和字符等数据类型的默认对象。(1)创建默认对象 df_date、df_char、df_money。 创建日期型默认对象 df_date,默认日期为 2006-4-
6、12。 创建字符型默认对象 df_char,默认字符为“unknown” 创建货币型默认对象 df_money,默认为 100 元(2)在 studentsdb 数据库中创建 stu_fee 数据表。学号 char(10) NOT NULL姓名 char(8) NOT NULL,学费 money交费日期 datetime电话号码 char(7)表 stu_fee 的数据结构如图 1-11 所示。图 l-11 stu_fee的数据结构学号 姓名 性别 交费日期 电话号码数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 7(3)使用系统存储过程 sp_bindehult 将默认对象d
7、f_date、df_char、df_money 分别绑定在 stu_fee 表的“学费” 、 “交费日期” 、“电话号码”列上。 数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 8(4)输入命令,在 stu_fee 表进行插入操作:(学号,姓名) values (0001, 刘卫平)(学号,姓名,学费) values (0001, 张卫民,$120)(学号,姓名,学费,交费日期) values (0001, 马东,$110, 2006-5-12)分析 stu_fee 表中插入记录的各列的值是什么?(5)完成以下代码解除默认对象 df_char、df_date、df_money
8、的绑定,并删除之。数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 96为学生表添加一列,命名为“院系” ,创建一个默认对象 stu_d_df,将其绑定到学生表的“院系”列上,使其默认值为“信息院” ,对学生表进行插入操作,操作完成后,删除该默认对象。7在 studentsdb 数据库中用 CREATE TABLE 语句创建表 stu_con,并同时创建约束。(1)创建表的同时创建约束。表结构如图 1-12 所示。图 1-12 要创建的表的结构约束要求如下:将学号设置为主键(PRIMARY KEY),主键名为 pk_sid。为姓名添加唯一约束(UNIQUE),约束名为 uk_na
9、me。数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 10为性别添加默认约束(DEFAULT),默认名称为 df_sex,其值为“男”为出生日期添加属性值约束(CHECK),约束名为 ck_bday,其检查条件为:出生日期1988-1-1 。(2)在 stu_con 表中插入如表 1-1 所示的数据记录。表 1-1 在 stu_con表中插入的数据分析各约束在插入记录时所起的作用,查看插入记录后表中数据与所插入的数据是否一致?(3)使用 ALTER TABLE 语句的 DROP CONSTRAINT 参数项在查询分析器中删除为 stu_con 表所建的约束。8用对象资源管理器中
10、数据库关系图为 studentsdb 数据库的成绩表添加外键约束(FOREIGN KEY),要求将“学号”设置为外键,参照表为学生表,外键名学号 姓名 性别 出生日期 家庭住址0009 张小东 1989-4-60010 李梅 男 1983-8-50011 王强 1988-9-100012 王强 1989-6-3数据库技术与应用实验 实验 6 数据完整性南京师范大学中北学院 11称为 fk_sid。使用系统存储过程 sp_help 查看成绩表的外键信息。在成绩表中插入表 1-2 所示记录,观察 SQLServer 会做何处理,为什么?如何解决所产生的问题?表 1-2学号 课程编号 分数0100 0001 78四、实验思考1在 SQLServer 2005 中,可采用哪些方法实现数据完整性?2,比较默认对象和默认约束的异同。3.在数据库中建立的规则不绑定到到数据表的字段上会起作用吗?为什么?