收藏 分享(赏)

实验6 数据完整性.doc

上传人:gnk289057 文档编号:5883602 上传时间:2019-03-20 格式:DOC 页数:7 大小:62.50KB
下载 相关 举报
实验6  数据完整性.doc_第1页
第1页 / 共7页
实验6  数据完整性.doc_第2页
第2页 / 共7页
实验6  数据完整性.doc_第3页
第3页 / 共7页
实验6  数据完整性.doc_第4页
第4页 / 共7页
实验6  数据完整性.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

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 、DROP DEFAULT)创建和删除默认对象的方法。4. 掌握系统存储过程 sp_bindefault、sp_unbindefault 绑定和解除绑定默认对

2、象的操作方法,以及 sp_help、sp_helptext 查询规则信息,sp_rename 更名规则的方法。5. 掌握企业管理器和 Transact-SQL 语句(CREATE TABLE、AKTER TABLE)定义和删除约束的方法,并了解约束的类型。二、实验准备1. 了解数据完整性概念。2. 了解创建规则和删除规则的语法,了解绑定规则和解除绑定规则的语法。3. 了解创建默认对象和删除默认对象的语法,了解绑定和删除绑定默认对象的语法。4. 了解约束的类型,创建约束和删除约束的语法。三、实验内容和步骤1为 sutdentsdb 数据库创建一个规则,限制所输入的数据为 7 位 0-9 的数字。

3、(1)复制 student_info 表命名为 stu_phone,在 stu_phone 表中插入一列,列名为 “电话号码” 。完成以下代码实现该操作。SELECT*INTO stu_phone FROM student_infoALTER TABLE stu_phone ADD _ colomn 电话号码_ CHAR(7)NULLStu_phone 表结构如图 1-10 所示。图 1-10 stu_phone 表结构学号 姓名 性别 出生日期 家庭住址 备注 电话号码1 0001 刘卫平 男 1980-10-01 00:00:00.000 衡山市东风路 78 号 NULL NULL2 00

4、02 张为民 男 1980-12-02 00:00:00.000 东阳市八一北路 25 号 NULL NULL(2)创建一个规则 phone_rule,限制所输入的数据为 7 位 09 的数字。实现该规则的代码为CREATE_RULE_phone_ruleASphone LIKE 0-9 0-9 0-9 0-9 0-9 0-9 0-9(3)使用系统存储过程 sp_bindrule 将 phone_rule 规则绑定到 stu_phone 表的“电话号码”列上。实现该操作的代码为sp_bindrule_phone_rule_,stu_phone.电话号码(4)输入以下代码,进行一次插入操作:IN

5、SERT INTO stu_phone(学号,姓名,电话号码)VALUES(0009,王国强,1234yyy)产生以下出错信息:服务器:消息 513,级别 16,状态 1,行 1列的插入或更新与先前的 CREATE RULE语句所强制的规则冲突。改语句已终止。冲突发生于数据库studentsdb,表stu_phone,列电话号码试分析:为什么会产生该出错信息?如果要实现插入操作,应修改 INSERT INTO 语句中的哪个值?phone_rule 规则能否对其他操作(如 DELETE)进行规则检查?INSERT INTO stu_phone(学号,姓名,电话号码)VALUES(0009,王国强

6、,1234yyy)插入不成功,错误原因在于违反前述的规则约束(即y 不在0-9之内);应修改1234yyy中的yyy,使之均在 0-9 范围之内;phone_rule 规则只对插入和修改进行规则检查 ,而删除不进行规则检查.2使用企业管理器实现实验内容 1 的每个操作。3创建一个规则 stusex_rule,将其绑定到 stu_phone 表的“性别”列上,保证输入的性别值只能是“男”或“女” 。CREATE RULE stusex_ruleAS性别 in (男 ,女)sp_bindrule stusex_rule stu_phone.性别4使用系统存储过程 sp_help 查询 stusex

7、_rule 规则列表,使用 sp_helptext 查询stusex_rule 规则的文本,使用 sp_rename 将 stusex_rule 规则更名为 stu_s_rule。EXCUTE sp_help stusex_ruleEXCUTE sp_helptext stusex_ruleEXCUTE sp_rename stusex_rule,stu_s_rule5删除 stu_s_rule 规则。答:应该先解除绑定再删除EXCUTE sp_unbindrule stu_phone.性别DROP stu_s_rule6在 stuedentdb 数据库中,建立日期、货币和字符等数据类型的默认

8、对象。(1)在查询分析其中,完成以下代码,创建默认对象 df_date、df_char 、df_money 。-创建日期型默认对象 df_dateCREATE DEFAULT df_dateAS2006-4-12GO-创建字符型默认对象 df_charCREATE DEFAULT df_charAS unknownGO-创建货币型默认对象 df_moneyCREATE DEFAULT df_moneyAS $100GO(2) 输入以下代码,在 studentdb 数据库中创建 stu_fee 数据表。CREATE TABLE stu_fee(学号 char(10)NOT NULL,姓名 cha

9、r(8)NOT NULL,学费 money,交费日期 datetime,电话号码 char(7) )表 stu_fee 的数据结构如图 1-11 所示。学号 姓名 学费 交费日期 电话号码图 1-11 stu_fee.的数据结构(3)使用系统存储过程 sp-bindefault 将默认对象 df_date、df_char 、df_money 分别绑定在 stu_fee 表的“学费” 、 “交费日期” 、 “电话号码” 列上。Sp_bindefault df_money,stu_fee.学费GOsp_bindefault df_date,stu_fee.交费日期GOSp_bindefault d

10、f_char,stu_fee.电话号码GO(4) 输入以下代码,在 stu_fee 表进行插入操作:INSERT INTO stu_fee(学号,姓名) values(0001,刘卫平)INSERT INTO stu_fee(学号,姓名,学费)values(0001, 张卫民,$120)INSERT INTO stu_fee(学号,姓名,学费,交费日期)VALUES(0001,马东,$110,2006-5-12)分析 stu_fee 表中插入记录的各列的值是什么?0001 刘卫平 $100 2006-4-120001 张卫民 $120 2006-4-120001 马东 $110 2006-5-

11、12(5)完成以下代码解除默认对象 df_char 的绑定,并删除之。按同样的方式,删除默认对象 df_date/df_money。EXCUTE unbindefault stu_fee.电话号码DROP DEFAULT df_charEXCUTE unbindefault stu_fee.交费日期DROP DEFAULT df_dateEXCUTE unbindefault stu_fee.学费DROP DEFAULT df_money7.使用企业管理器创建默认对象 df_date、df_money,并将它们分别绑定到 stu_fee 表的“学费” 、 “交费日期” 、 “电话号码”列上,在

12、插入操作中观察 stu_fee 表的数据变化情况,完成操作后,删除这些默认对象。具体操作。8.为 student_info 表添加一页,命名为“院系” ,创建一个默认对象 stu_d_df,将其绑定到 student_info 表的“院系 ”列上,时期默认值为“信息院 ”,对 student_info 表进行插入操作,操作完成后,删除该默认对象。分别使用企业管理器和查询分析器实现。ALTER TABLE student_infoADD 院系GOCREATE DEFAULT stu_d_dfAS 信息院GOsp_bindefault stu_d_df student_info.院系GOEXCUT

13、E unbindefault stu_info.院系DROP DEFAULT stu_d_df9.在 studentsdb 数据库中用 CREATE TABLE 语句创建表 stu_con,并同时创建约束。(1)创建表的同时创建约束。表结构如图 1-12 所示 列名 数据类型 长度学号 char 4姓名 char 8性别 char 2出生日期 datetime 8家庭住址 varchar 50图 1-12 要创建的表的结构约束要求如下: 将学号设置为主键(PRIMARY KEY) ,主键名为 pk_sid。 为姓名添加唯一约束(UNIQUE) ,约束名为 uk_name。 为性别添加默认约束(

14、DEFAULT) ,默认名称为 df_sex,其值为“男” 。 为出生日期添加属性值约束(CHECK) ,约束名为 ck_beday,其检查条件为:出生日期1988-1-1 。CREATE TABLE stu_con学号 char(4)CONSTRAINT pk_sid PRIMARY KEY姓名 char(8)CONSTRAINT uk_name UNIQUE性别 char(2)CONSTRAINT df_sex DEFAULT 男出生日期 datetime(8)CONSTRAINT ck_beday CHECK 出生日期1988-1-1家庭住址 varchar(50)(2)在 stu_co

15、n 表中插入如表 1-1 所示的数据记录。 分析各约束在插入记录时所起的作用,查看插入记录后表中数据与所插入的数据是否一致?答:不一致(3)使用 ALTER TABLE 语句的 DROP CONSTRAINT 参数项在查询分析器中删除为stu_con 表所建的约束。ALTER TABLE stu_conDROP CONSTRAINT pk_sid,uk_name,df_sex,ck_date10. 用企业管理器完成实验内容 9 的所有设置。11. 在查询分析器中,为 studentsdb 数据库的 grade 表添加外键约束(FOREIGN KEY) ,要求将“学号”设置为外键,参照表为 st

16、udent_info,外键名为 ufk_sid。使用系统存储过程 sp_help 查看 grade 表的外键信息。在 grade 表中插入表 1-2 所示记录,观察 SQL Server 会做何处理,为什么?如何解决所产生的问题?表 1-2学号 课程编号 分数0100 0001 78使用查询分析器删除 grade 表的外键 fk_sid。USE studentsdbALTER TABLE gradeCONSTRAINT ufk_sid FOREIGN KEY(学号)REFERENCES student_info(学号)GOsp_help gradeGOINSERT INTO grade(学号,

17、课程编号,分数) VALUES(0100,0001,78)GOSQL Server 会报错,原因在于插入的学号违反外键约束,即在 student_info 表中没有学号为0100的字段.四、实验思考1. 在 SQL Server 2000 中,可采用哪些方法实现数据完整性?使用规则实施数据完整性使用默认值实施数据完整性使用约束实施数据完整性2. 比较默认对象和默认约束的异同。检查约束是一个规则,它确认一个 SQL Server 表中某条记录中的数据可接受的字段值。检查约束帮助执行域完整性。域完整性定义了一个数据库表中字段的有效值。检查约束可以验证一个单独字段或一些字段的域完整性。你对一个单独的字段可以有多个检查完整性。如果被插入或更新的数据违反了一个检查约束,那么数据库引擎将不允许这个插入或更新的操作发生。默认值约束和默认对象:默认值约束是对象级的,其作用范围仅限于一个表,删除表则删除默认值约束。默认值对象是数据库级的,作为数据库对象单独存在于数据库中,需要时可以绑定到任何一个表中。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报