收藏 分销(赏)

实验6数据完整性.doc

上传人:pc****0 文档编号:7547412 上传时间:2025-01-09 格式: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的数字。(1)复制student_info表

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

4、 表结构(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)输入以下代码,进行一次插入操作:INSERT INTO stu_phone(学号,姓名,电话号码)VALUES(0009,王国强,1234yyy)产生以下出错信

5、息:服务器:消息513,级别16,状态1,行1列的插入或更新与先前的CREATE RULE语句所强制的规则冲突。改语句已终止。冲突发生于数据库studentsdb,表stu_phone,列电话号码试分析:为什么会产生该出错信息?如果要实现插入操作,应修改INSERT INTO语句中的哪个值?phone_rule规则能否对其他操作(如DELETE)进行规则检查?INSERT INTO stu_phone(学号,姓名,电话号码) VALUES(0009,王国强,1234yyy)插入不成功,错误原因在于违反前述的规则约束(即y不在0-9之内);应修改1234yyy中的yyy,使之均在0-9范围之内;

6、phone_rule规则只对插入和修改进行规则检查,而删除不进行规则检查.2使用企业管理器实现实验内容1的每个操作。3创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。CREATE RULE stusex_ruleAS性别 in (男,女)sp_bindrule stusex_rule stu_phone.性别4使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。EXCU

7、TE 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数据库中,建立日期、货币和字符等数据类型的默认对象。(1)在查询分析其中,完成以下代码,创建默认对象df_date、df_char、df_money。-创建日期型默认对象df_dateCREATE DEFAULT df_dateAS2006-

8、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,姓名char(8)NOT NULL,学费 money,交费日期 datetime,电话号码 char(7)表 stu_fee 的数据结构如图1-11所示。学号姓名学费交费日期电话号码图1-11 stu_fee.的数据结构(3) 使

9、用系统存储过程 sp-bindefault 将默认对象 df_date、df_char、df_money 分别绑定在stu_fee表的“学费”、“交费日期”、“电话号码”列上。Sp_bindefault df_money,stu_fee.学费GOsp_bindefault df_date,stu_fee.交费日期GOSp_bindefault df_char,stu_fee.电话号码GO(4) 输入以下代码,在stu_fee表进行插入操作:INSERT INTO stu_fee(学号,姓名) values(0001,刘卫平)INSERT INTO stu_fee(学号,姓名,学费)values

10、(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-12(5) 完成以下代码解除默认对象df_char的绑定,并删除之。按同样的方式,删除默认对象df_date/df_money。EXCUTE unbindefault stu_fee.电话号码DROP DEFAULT df_charEXCUTE unbind

11、efault stu_fee.交费日期DROP DEFAULT df_dateEXCUTE unbindefault stu_fee.学费DROP DEFAULT df_money7.使用企业管理器创建默认对象df_date、df_money,并将它们分别绑定到stu_fee表的“学费”、“交费日期”、“电话号码”列上,在插入操作中观察stu_fee表的数据变化情况,完成操作后,删除这些默认对象。具体操作。 8.为student_info表添加一页,命名为“院系”,创建一个默认对象stu_d_df,将其绑定到student_info表的“院系”列上,时期默认值为“信息院”,对student_i

12、nfo表进行插入操作,操作完成后,删除该默认对象。分别使用企业管理器和查询分析器实现。ALTER TABLE student_infoADD 院系GOCREATE DEFAULT stu_d_dfAS 信息院GOsp_bindefault stu_d_df student_info.院系GOEXCUTE unbindefault stu_info.院系DROP DEFAULT stu_d_df 9.在studentsdb数据库中用CREATE TABLE语句创建表stu_con,并同时创建约束。 (1)创建表的同时创建约束。 表结构如图1-12所示 列名数据类型长度学号char4姓名char8

13、性别char2出生日期datetime8家庭住址varchar50 图 1-12 要创建的表的结构约束要求如下: 将学号设置为主键(PRIMARY KEY),主键名为pk_sid。 为姓名添加唯一约束(UNIQUE),约束名为uk_name。 为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”。 为出生日期添加属性值约束(CHECK),约束名为ck_beday,其检查条件为:出生日期1988-1-1。CREATE TABLE stu_con学号 char(4) CONSTRAINT pk_sid PRIMARY KEY姓名 char(8) CONSTRAINT uk_n

14、ame UNIQUE性别 char(2) CONSTRAINT df_sex DEFAULT 男出生日期 datetime(8) CONSTRAINT ck_beday CHECK 出生日期1988-1-1家庭住址 varchar(50)(2) 在stu_con表中插入如表1-1所示的数据记录。 分析各约束在插入记录时所起的作用,查看插入记录后表中数据与所插入的数据是否一致?答:不一致(3)使用ALTER TABLE语句的DROP CONSTRAINT参数项在查询分析器中删除为stu_con表所建的约束。ALTER TABLE stu_conDROP CONSTRAINT pk_sid,uk_

15、name,df_sex,ck_date10. 用企业管理器完成实验内容9的所有设置。11. 在查询分析器中,为studentsdb数据库的grade表添加外键约束(FOREIGN KEY),要求将“学号”设置为外键,参照表为student_info,外键名为ufk_sid。 使用系统存储过程sp_help查看grade表的外键信息。 在grade表中插入表1-2所示记录,观察SQL Server会做何处理,为什么?如何解决所产生的问题?表1-2学号课程编号分数0100000178使用查询分析器删除grade表的外键fk_sid。USE studentsdbALTER TABLE gradeCO

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

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服