实验6-数据完整性_第1页
实验6-数据完整性_第2页
实验6-数据完整性_第3页
实验6-数据完整性_第4页
实验6-数据完整性_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验目的掌握Transact-SQL语句(CREATERULE、DROPRULE)创建和删除规则的方法。掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_help、sp_helptext查询规则信息、sp_rename更名规则的方法。掌握Transact-SQL语句(CREATEDEFAULT、DROPDEFAULT)创建和删除默认对象的方法。掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作方法,以及sp_helptext查询规则信息。掌握SQLServer管理平台和Transact-SQL语句(CREATETABLE、ALTERTABLE)定义和删除约束的方法,并了解约束的类型。二、实验内容及步骤〔1〕为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为“ 号码”。完成以下代码实现该操作。SELECT*INTOstu_phoneFROMstudent_infoALTERTABLEstu_phoneADD CHAR(7)NULLstu_phone表结构如图1-10所示。学号姓名 性別出生日期富庭住址备注电话钢0001刘卫平男0002兆卫民男1B80-10-0100:QD:00.0D0衡山市就凤翳常号1980-L2-0200:00:00.ODD束阳市八-北路25号JR1LLNULLJOJLLNULL图1-10stu_phone表结构创建一个规则phone_rule,限制所输入的数据为7位0~9的数字。实现该规则的代码为CREATE phone_ruleAS@phoneLIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“号码”列上。实现该操作的代码为sp_bindrule ,'stu_phone. 号码'输入以下代码,进行一次插入操作:INSERTINTOstu_phone(学号,, 号码)VALUES('0009','王国强','1234yyy')产生以下出错信息:消息513,级别16,状态0,第1行列的插入或更新与先前的CREATERULE语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库'studentsdb',表'',列' 号码'。语句已终止。试分析:为什么会产生该出错信息?如果要实现插入操作,应修改INSERTINT0语句中的哪个值?phone_rule规则能否对其他操作〔如DELETE〕进行规则检查?〔2〕创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。〔3〕使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。〔4〕删除stu_s_rule规则。stu_s_rule〔stusex_rule更名后规则名〕是否仍然绑定在stu_phone表的“性另U”列上?应如何操作才能删除它?〔5〕在studentdb数据库中,建立日期、货币和字符等数据类型的默认对象。在查询设计器中,完成以下代码,创建默认对象df_date、df_char、df_money。—创建日期型默认对象df_dateCREATE df_dateAS'2009-4-12'GO--创建字符型默认对象df_charCREATEDEFAULTdf_char 'unknown'GO--创建货币型默认对象df_moneyCREATEDEFAULT AS$100GO输入以下代码,在studentsdb数据库中创建stu_fee数据表。CREATETABLEstu_fee(学号char(10)NOTNULL,char(8)NOTNULL,学费money,交费日期datetime,号码char(7))表stu_fee的数据结构如图1-11所示。学号学费交费日期电话号%图1-11stu_fee的数据结构使用系统存储过程sp_bindefault将默认对象df_money、df_date、df_char分别绑定在stu_fee表的“学费”、“交费日期”、“号码”列上。 df_money,'stu_fee.学费’GOsp_bindefault ,'stu_fee.交费日期'GOsp_bindefaultdf_char,'stu_fee. 号码'GO输入以下代码,在stu_fee表进行插入操作:INSERTINTOstu_fee(学号,)VALUES('OOO1','刘卫平')INSERTINTOstu_fee(学号,,学费)VALUES('OOO1','张卫民',$120)INSERTINTOstu_fee(学号,,学费,交费日期)VALUES('0001','马东',$110,'2006-5-12')分析stu_fee表中插入记录的各列的值是什么?完成以下代码,解除默认对象df_char的绑定,并删除之。 'stu_fee.号码’ DEFAULTdf_char按同样的方式,删除默认对象df_date、df_money。〔6〕为student_info表添加一列,命名为“院系”,创建一个默认对象stu_d_df,将其绑定到student_info表的“院系”列上,使其默认值为“信息院”,对student_info表进行插入操作,操作完成后,删除该默认对象。〔7〕在studentsdb数据库中用CREATETABLE语句创建表stu_con,并同时创建约束。①创建表的同时创建约束。表结构如图1-12所示。鑒据类型学号char4姓窑a性別char2岀主日期datetime&棗庭住址50图1-12要创建的表的结构约束要求如下:将学号设置为主键〔PRIMARYKEY〕,主键名为pk_sid。为添加唯一约束〔UNIQUE〕,约束名为uk_name。为性别添加默认约束〔DEFAULT〕,默认名称为df_sex,其值为“男”。为出生日期添加属性值约束〔CHECK〕,约束名为ck_bday,其检查条件为:出生日期>'1988-1-1'。②在stu_con表中插入如表1-1所示的数据记录。表1-1在stucon表中插入的数据学号性别出生日期家庭住址0009张小东1989-4-60010李梅女1983-8-50011王强1988-9-100012王强1989-6-3分析各约束在插入记录时所起的作用,查看插入记录后表中数据与所插入的数据是否一致?③使用ALTERTABLE语句的DROPCONSTRAINT参数项在查询设计器中删除为stu_con表所建的约束。〔8〕用SQLServer管理平台完成实验内容7的所有设置。〔9〕在查询设计器中,为studentsdb数据库的grade表添加外键约束〔FOREIGNKEY〕,要求将“学号”设置为外键,参照表为student_info,外键名称为fk_sid。使用系统存储过程sp_help查看grade表的外键信息。在grade表中插入一条记录,学号为0100,课程编号为0001,分数为78。观察SQLServer会做何处理,为什么?如何解决所产生的问题?使用查询设计器删除grade表的外键fk_sid。三、实验结果为studentsdb数据库创建一个规则,限制所输入的数据为7位0〜9的数字。复制学生表命名为stu_phone,在stu_phone表中插入一列,列名为“号码”。完成以下代码实现该操作。SELECT*INTOstu_phoneFROM学生表ALTERTABLEstu_phoneADD号码CHAR(7)NULLstu_phone表结构如图1-10所示。5竽号厲七口_0山■卫f* (jtFbl1itu[fluvryLBill-stTXttSJratEJia电话码WIX朗忻ww期和i市和^...m2flMi月眩暑市五■炜丁…WUiAUL加fl]99Gh&-]40;(MHK)踊fi噪大“MLflLtlfl勵11中W.n妣娥£X跑屮WWW砒皿耽“MAI19KO15Q1W.QQ卵TESUSf?l.”晰nuf立139□⑷】專口!MUHJEiFBifi山用..HUIiULCi\ULfVUl创建一个规则phone_rule,限制所输入的数据为7位0〜9的数字createrulephone_ruleas@号码like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'⑶使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“ 号码”列上。spjbindrulephone_rule,'stu_phone. 号码豆消息已将规则綁定到表的列-(4)输入以下代码,进行一次插入操作:INSERTINTOstu_phone(学号,, 号码)VALUES('0009','王国强','1234yyy')产生以下出错信息:消息513,级别16,状态0,第1行列的插入或更新与先前的CREATERULE语句所指定的规则发生冲突。该语句已终止。冲突发生于数据库'studentsdb',表'',列' 号码'。语句已终止。试分析:为什么会产生该出错信息?如果要实现插入操作,应修改INSERTINTO语句中的哪个值?phone_rule规则能否对其他操作〔如DELETE〕进行规则检查?修改:INSERTINTOstu_phone(学号,, 号码)VALUES('0009','王国强','1234567')•1牝tiTi:XQz.:n|TT■*丄祀UK衿*心吗JiLL-3-i-xxeHJlefr二D禅咖sfiiw亦jit.•SACh'WH耳F尬町前口串刀視diipwn财MHAUi业JSOTomoL.mjr牴JtfJaAFii•4W4LUphone_rule规则可以对其他操作进行规则检查创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只能是“男”或“女”。createrulestusex_ruleas@性别in('男’,’女')-rjEMldbo.ph?ne_rul«d■ibu.ztusex_riilH使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。J结果消息Name□wn&rTy..匚re3ted_d3tetinn&1jstusex_ruledborule2012-05-0710:46:12.607sp_helpstusex_ruleJ结果匕消息1Textcreaterulestusex_rule\2耶回性别叫男:女〕Sp_helptextstusex_rule-um-ddbu.phLirLe_i-i£Le门dbo.e+u_E_rulh:sp_rename stusex_rule,stu_s_rule4•删除stu_s_rule规则。-FZiMl-ddbii.phune_riiledroprulestu_s_rule注意:stu_s_rule为stusex_rule更名后规则名,是否仍然绑定在stu_phone表的“性别”列上,应如何操作才能删除它。5.在studentdb数据库中,建立日期、货币和字符等数据类型的默认对象。⑴创建默认对象df_date、df_char、df_money。创建日期型默认对象df_date,默认日期为2006-4-12。—创建日期型默认对象df_dateCREATEDEFAULTdf_dateAS'2006-4-12'创建字符型默认对象df_char,默认字符为“unknown”--创建字符型默认对象df_charCREATEDEFAULTdf_charas'unknown'创建货币型默认对象df_money,默认为100元--创建货币型默认对象df_moneyCREATEDEFAULTdf_moneyAS'$100'日口默认值噌dbo.dfjchar龍]dbQ.df_date霸dbo.df_inoney〔2〕输入以下代码,在studentsdb数据库中创建stu_fee数据表。CREATETABLEstu_fee(学号char(10)NOTNULL,char(8)NOTNULL,学费money,交费日期datetime,号码char(7))表stu_fee的数据结构如图1-11所示。学号学費交费日期电话号码图1-11stu_fee的数据结构•丿裳-WIN-L&4PA.LKOO7H...-EQLQuery】阴|・学号 姓名 芋资 交黄日期电话号码f^Al NULLNULL(3)使用系统存储过程sp_bindehult将默认对象df_date、df_char、df_money分别绑定在stu_fee表的“学费”、“交费日期”、“ 号码”列上。spjbindefaultdf_money,'stu_fee.学费'GOspjbindefaultdf_date,'stu_fee.交费日期'GOspjbindefaultdfjchar,'stujfee.号码'GO占消息|已將默认值绑定到列,(4)输入命令,在stu_fee表进行插入操作:(学号,)values('0001','刘卫平')INSERTINTOstu_fee(学号,)values('0001','刘卫平')〔学号,,学费)values('0001','张卫民',$120)INSERTINTOstu_fee(学号,,学费)values('0001','张卫民',$120)(学号,,学费,交费日期)values('0001',‘马东‘,$110,'2006-5-12‘)INSERTINTOstu_fee(学号,,学费,交费日期)VALUES('0001','马东',$110,'2006-5-12')分析stu_fee表中插入记录的各列的值是什么?,令-dbcutii_fEeWIN^LB4FALKaO7H....-SQLQG&7^5ql*摘董学费交费日期电话冒码勿任!丰20M/V120=00=00unkrtgwn0001弓辽民120,MODo;oo:(jqltknown0001110.00002OKW30:00:00uiknown*MJLLMilMILMJL1NULt(5)完成以下代码解除默认对象df_char、df_date、df_money的绑定,并删除之。spjunbindefault'stujfee. 号码'dropDEFAULTdfjcharGo

sp_unbindefault'stu_fee.交费日期'dropDEFAULTdf_dategosp_unbindefault'stu_fee.学费'dropDEFAULTdf_money6.为学生表添加一列,命名为“院系”,创建一个默认对象stu_d_df,将其绑定到学生表的“院系”列上,使其默认值为“信息院”,对学生表进行插入操作,操作完成后,删除该默认对象。1〕altertable学生表add院系varchar(8)2〕createdefaultstu_d_dfas'信息院'gosp_bindefaultstu_d_df,'学生表.院系'go(3)sp_unbindefault'学生表.院系'性别堆日期性别堆日期家庭住址 看注阵系l^O/LOj'l0:00:MJ衙山市东凤將丁…腹血NULL男1990/12/1东阳匍1一北… 3MJLL1980/7/^0:C0:0D匠岭市方一豁丁…AUdNULL1^30/5/10ft:OD:tXI吳毎相睚尢■-,awxAU;舅1930/7/13-东方市中山骼上…胶肛NUIL卑1530^0:00:00甚禹市解减人*他E」NULL童1^30:'3/15&:OD:00山甫芾红IM!&丄…心二ZULU玄1SM/4/1SD:«:00薯江市绍山昭H…3NULlAUXAWiMXL flCttNUIL约束要求如下:将学号设置为主键(PRIMARYKEY),主键名为pk_sid。②为添加唯一约束(UNIQUE),约束名为uk_name。为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”为出生日期添加属性值约束(CHECK),约束名为ck_bday,其检查条件为:出生日期>'1988-1-1'。CREATETABLEstu_con(学号char(4),char(8),性别char(2),出生日期datetime,家庭住址varchar(50),constraintPK_sidPRIMARYKEY(学号),constraintuk_nameUNIQUE(),constraintck_bdaycheck(出生日期〉'1988TT'),)altertablestu_conaddconstraintdf_sexdefault'男'FOR性别adb<».rtu_flon垂4tw.s:u_keWLhiLB4FA1.KQQ7TOC\o"1-5"\h\z\o"CurrentDocument"皴宕 如同 圈BS* <harp> |W出生巳期 datcEme 團〔2〕在stu_con表中插入如表1-1所示的数据记录。表1-1在stucon表中插入的数据学号性别出生日期家庭住址0009张小东1989-4-60010李梅女1983-8-50011王强1988-9-100012王强1989-6-3分析各约束在插入记录时所起的作用,查看插入记录后表中数据与所插入的数据是否一致?INSERTINTOstu_con(学号,,出生日期)values('0009','张小东','1989-4-6')INSERTINTOstu_con(学号,,出生日期)values('0010','李梅','1983-8-5')消息547,级别16,状态0,第1行INSERT语句与CHECK约束〃ck_bday〃冲突。该冲突发生于数据库〃studentsdb〃,表"",column'出生日期'。语句已终止。INSERTINTOstu_con(学号,,出生日期)valuesCOOll','王强','1988-9-10')INSERTINTOst

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论