数据库试验数据控制完整性_第1页
数据库试验数据控制完整性_第2页
数据库试验数据控制完整性_第3页
数据库试验数据控制完整性_第4页
数据库试验数据控制完整性_第5页
免费预览已结束,剩余32页可下载查看

付费下载

下载本文档

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

文档简介

1、实验9数据控制<完整性部分)实验9.1实体完整性一、实验目的学习实体完整性的建立,以及实践违反实体完整性的结果。二、实验内容与要求<1)在数据库tempdbforintegHty中建立表Stu_Union,包括sno(char(5>>,sname(char(8>>,ssex(char(1>>,sage(int>,sdept(char(20>>五个列,对sno进行主键约束,并且在没有违反实体完整性的前提下插入并更新一条记录b5E2RGbCAPCREATETABLEStu_Union(snochar(5>,snamechar(

2、8>,ssexchar(1>,sageint,sdeptchar(20>>JEyECOlumris尔凯dbodkc汶据库3起J面包03面码sg4jNorJpubJtenJtemFB劭图Tfl-teBpdbforintegrity中(在u(local)"上)的SF表列名设置主犍矍)插入列迪)删除列)任务宜)全选Q)保存6)索引原炉美系理),CHECK约束心)属性)至.口IL纪:标识标识种子±二±1|型bMJS_数据类型I长度1420允许空TT-否Tlie»pdbforintegrity"中在41(Local)w上)的Jf表

3、列名数据类型长度允许空因snoch4r5snani已char8Vsiexch4T17sageint4V5dept.char20列描述默k值精度io小数位数0标识者标识种子标识速噌量是RowGaid.否泛排序版凰Cdatab且骂危d«fault表却t11_口n1口11,中的数据*位置是utcMpdbfczinteerity"中.u(local)"_ttiFEnd1siianie|es3EL写电起|sdept“逆翡张海M22信工|土没有什么异常,一切正常<2)练习违反实体完整性的插入操作。Tii表uStu-Union"中的数据,位置是teapdbfor

4、inteerity"中、u(local)"上|sna*me1sage1adept张障M22信工无法插入<3)练习违反实体完整性的更新操作。insertstu_unionvalues('12345','张海','M',22,'信工'><4)在数据库tempdbforintegrity中建立表Scholarship,包括M_ID(varchar(30>>,Stu_id(char(10>>,R_Money(int>>三个。首先向该表插入数据,练习当与现有的数据环境

5、不等时,无法建立实体完整性以及参照完整性。p1EanqFDPwcreatetableScholarship(M_IDvarchar(30>,Stu_idchar(10>,R_Moneyint>insertScholarshipvalues('whatmeaning','12345',10000>insertScholarshipvalues(null,'12346',10000>r-1Tn表'Scholarship”中的数据,位置是Mteapdbforintegrity"中.M(local)w上11

6、1II|Stuid|RMoney,1234510000JOIULL>1234610000Tiii设计表"Scholarship”>位置是ateapdbforintegrity"1中.(local)99上列名至1长度允许空MJDvarchar30Stu_idchar10R_Moneyint4列默认值精度0小数位数0标识否标识种子标识递增量是RowGuid否公式排序规则<databasedefault)fx在保存过程中遇到错误.某些数据库对象未被保存.保存不完全Smar驾hip表=不能修改蓑.ODBC错误:MicrosoftOBBCSQLServerDrive

7、rSQL无法将NlMicrosoftODBCSQLServerDriverSQLSamir语句已终止.IQi.m确定j保存文本文件)整助®谓数应年r器囊113户务据用(local)tenpdbForintegrityMSSQLCI1-DataTools'Scholarship*表-求能修废表。ODBC错误:HLcrosoFtODBCSQLServerDriuer|SQL雷皿时无怯授NULL值插入歹,表1tenpdbForintegrity.dbo.Tnp_Scholarship1(该列不允件空值。INSERT失虹NicrosoFtODBCSQLServerDriverSQL与

8、河口已口语句已终止仃实验9.2参照完整性一、实验目的学习建立外键,以及利用FOREIGNKEYREFERENCES句以及各种约束保证参照完整性。二、实验内容< 一)、参照完整性< 1)为练习参照完整性,在数据库tempdbforintegHty中建立表Course,包括cno(char(4>>,cname(varchar(50>>,cpoints(int>三列,令cno为其主键;并且在表Course中插入数据。为下面的实验步骤做预先准备。DXDiTa9E3dCREATETABLECOURSE(CNOCHAR(4>,CNAMEVARCHAR(50&

9、gt;,CPOINTSINT,PRIMARYKEY(CNO>>insertcoursevalues('1','数据库',3>insertcoursevalues('2','数学',3>insertcoursevalues('3','物理',4>< 2)在数据库tempdbforintegrity中,建立表SC包括sno,cno及grade三列。令sno和cno分别为参照Stu_Union表以及Course表的外键,设定级联删除,并令<sno,cno)为其主键

10、。在不违反参照完整性的前提下,插入数据。RTCrpUDGiTCREATETABLESC(CNOCHAR(4>,SNOCHAR(5>,GRADEINTPRIMARYKEY(CNO,SNO>,FOREIGNKEY(CNO>REFERENCESCOURSE(CNO>,FOREIGNKEY(SNO>REFERENCESSTU_UNION(SNO>,INSERTSCVALUES('1','35',76>insertsc(cno,sno,grade>values('2','35',88&g

11、t;insertsc(cno,sno,grade>values('3','35',99>< 3)练习违反参照完整性的插入数据。< 4)在Stu_Union中删除数据,练习级联删除。DELETEFROMSTU_UNIONWHERESNO='35'IF哥哥:消息河3镇别1舟就苹I,行DELETE:节向与COLUN3;EEFERENCE约束PFKSCsno1DE57479P;校*读冲突要生于孜据岸Ptenjjdbfontitigtriy,表'SC'.coIibul'tnor»语句已烈止.解决方案

12、:CREATETABLESC(CNOCHAR(4>,SNOCHAR(5>,GRADEINTPRIMARYKEY(CNO,SNO>,FOREIGNKEY(CNO>REFERENCESCOURSE(CNO>ONDELETECASCADE,FOREIGNKEY(SNO>REFERENCESSTU_UNION(SNO>ONDELETECASCADE,>TdeleteFROMSTU.UNIONWHERESN0=J355(所影响的行数为l行)删除成功< 5)在Course中删除数据,练习级联删除。DELETEFROMcourseWHERECNO=

13、9;1'< 6)用altertable语句将SC表中的ondeletecascade改为ondeleterestrict。重新插入SC的数据。重复本实验中的<4)、< 5),观察结果,分析原因。5PCzVD7HxAALTERTABLESCDROPCONSTRAINTFK_SC_SnoALTERTABLESCADDCONSTRAINTFK_SC_CnoFOREIGNKEY(Cno>REFERENCESCourse(Cno>ONDELETERESTRICTjLBHrnAILg< 7)用altertable语句将SC表中的ondeletecascade改为

14、ondeletesetNULL。重新插入SC的数据。重复本实验中的<4)、< 5),观察结果,分析原因。XHAQX74J0XalterTABLESCDROPCONSTRAINTFK_SC_CNOALTERADDCONSTRAINTFK_SC_CNOFOREIGNKEY(CNO>REFERENCESCOURSE(CNO>ONDELETESETNULL<二)、多重级联删除<1)为了练习多重级联删除,建立Stu_Card表,包括card_id(char(14>>,stu_id,remained_money(decimal(10,2>>三歹!

15、J,令stu_id为参照Stu_Union表的外键,令card_id为其主键,并插入数据。LDAYtRyKfEinsertstu_unionvalues201,3yuanan,M',22,'工M'Winsertstu_uriionelwC20103-玲门,25)皿。碌go-insertstuunionvalues-201观J王四/M',22/DC)和Iselect*fronstuunionsnosnamessexsagesdept1YoioizhanghaifTiIffl220102yuamanM22TM320103王三M22IM42D104王四Nl22nn网格

16、ED消息批查询完成。QT-2D1?05091440(60)QTTchar(5>,remained_moneyCREATETABLEStu_Card(card_idchar(14>,snodecimal(10,2>Zzz6ZB2Ltkprimarykey(card_id>,foreignkey(sno>referencesstu_union(sno>-insertstu_card-values('9558844022312','20181',11111.11>-goinsertstu_cardvalues('955

17、8844022313','20182',15000>goinsertstu_cardvalues('9558844022314','20183',11111>goinsertstu_cardvalues('9558844022315','20184',11112>goselect*fromstu_cardaLU_L>aJLU-valuesC955884402231Z,J201Of?UHL11)goinsertstucardvaluesC955S844022313r/20102f150

18、00)goinsertstucardvalues('955&844022314v2010311111)goinsertstu_cardvaluss(,9558344022315,/20104',11112)goselect*card_idsnorejnained_money1955384402231220101mu.ii295588440223132010215000.00395588440223142010311111.004955SB440223152010411112.00n网格即消息批查询完成口仃-2012。50914408口)QLR12U5(9144(AA5i

19、iu式<2)为了练习多重级联删除,建立ICBC_Card表,包括bank_id(char(20>>,stu_card_id,restored_money(decimal(10,2>>三列,令stu_card_id为参照Stu_Card表的外键,令bank_id为其主键,并插入数据。dvzfvkwMI1createtableICBC_Card(bank_idchar(20>,stu_card_idchar(14>,restored_moneydecimal(10,2>,Primarykey(bank_id>,Foreignkey(stu_ca

20、rd_id>referencesstu_card(card_id>>rqyn14ZNXIinsertICBC_cardvalues('1','9558844022312',11111.11>goinsertICBC_cardvalues('2','9558844022313',15000>goinsertICBC_cardvalues('3','9558844022314',1111>goinsertICBC_cardvalues('4','

21、;9558844022315',11112>goselect*fromICBC_cardbank_idstu_card_idrestored_nioney1I955884402231211111.112295688440223131EOOO.003395533440223141111.0044955884402231511112.00n网格即消息批查询完成-iQT-201206061440(B0)QfT-201205091440inistra<3)通过删除Stu_Union表中的一条记录,观察Stu_Union、Stu_Card、ICBC_Card三个表的多重级联删除。Em

22、xvxOtOcoalterTABLEstu_cardDROPCONSTRAINTFK_stu_card_SNOGOALTERTABLEstu_cardADDCONSTRAINTFK_stu_card_SNOFOREIGNKEY(SNO>REFERENCESSTU_UNION(SNO>ONDELETECASCADEALTERTABLEicbc_cardADDCONSTRAINTFK_icbc_card_stu_card_idFOREIGNKEY(stu_card_id>SixE2yXPq5REFERENCESSTU_card(card_id>ONDELETECASCADE

23、3E询QT-20205Q91144D»teHpdbCaeLnte£rItQT-0L20EQ9144OULdiixnxJt-Ealde一五标JSiSBIselect卓ftonstui_iini0ti!stu_eard,ICSC_c3idwherestuLunian.snostucard.snoiridstucard.catdid"ICBCcatistucardid1snajne5ECKs-afesdep-tc»d_idSRDremainedjorieybank_idstucard.idres20101thimghaif21-IK9559B140223L22

24、0101hulTi19558B4-4D223i2】?i2201102yu-aiianM22Iff955364022311320102i5DOO.0029553B44D223I335C320HB王三M225955302231420103illIL.DO39558到4口建314111420IQd王四¥22mffiE86440223162010491112.004955gB44口建315111QT-201ZD50tl44口.O)QT-201ZD5D9L440Adrijustr*tflnpdbforintegrity0M:0D4行行4,列J吞御qr-2£U2D£03J44

25、0.tEapdbforintcErity.9T-20I20509I440AdBinistrator无标3U*,Edeletesty-union前ere£ti£i-r201011相SBlSCt*ffpr武口_师1口风stu_cardrICK_cordwerestu.union,shdstuc&k±±naud±tu.c&td.cardid-ICBCcird.stuencdid3W船加暮皿/sdtpicard_idfnoTtmained.mQTicybank.id5tu_card_idrest120L02yuanan*22二M9558

26、840223132010215000.DO295588440223113U5Q220103王三22IN955SS440223i42010311111.003955S3A40223I4|1J3S4L04XQ12IK»6S痢02231d2010411112.HO4躺S比第。谑315Bill网搭圜消息J批查B成.5-201:20509040(B.D)QI-2DlZ05Q9H-3DSAdiiiiisnp/fetint电炉i.iyD.CO.QD5行行3,列3<三)、表的互参照问题及其解决方法<1)建立教师授课和教师听课关系的两张表,规定一个教师可以授多门课,但是每门课程只能指定一个

27、教师去授课,同时,规定一门课程可以由多位老师听课,但是每位老师只能听一门课程。所以要为两张表建立相互之间的参照关系。6ewMyirQFLcreatetableteacher_course(tnochar(4>,tnamechar(10>,cnochar(4>,primarykey(tno>>createtablelisten_course(tnochar(4>,tnamechar(10>,cnochar(4>,primarykey(cno,tname>>altertablelisten_courseaddconstraintFK_li

28、sten_courseforeignkey(tno>referencesteacher_course(tno>kavU42VRUsgoaltertableteacher_courseaddconstraintFK_teacher_courseforeignkey(cno>referenceslisten_course(cno>y6v3ALoS89<2)创建一个班里的学生互助表,规定:包括学生编号,学生姓名,学生的帮助对象,每个学生有且仅有一个帮助对象,帮助对象也必须是班里的学生。M2ub6vSTnPcreatetablestudent(snochar(10>

29、,cnamechar(20>,helperchar(20>,primarykey(sno>>altertablestudentaddconstraintfk_studentforeignkey(helper>referencesstudent(helper>0YujCfmUCwaltertabi*studentaddconstraintfk_studentforeignkeyhelperreferencesstud&nthelper:JI服务器:消息1TT6,级别15状态1,行1在被弓I用表"studeirth中没有与外犍fkstudent

30、"的引用列的列表匹配的主键或候选辘。服务器:海县1750,短别16,泯态1,行1未能创建约束由请参剧前面的错误信息。<3)学校学生会的每个部门都有一个部长,每个部长领导多个部员,每个部只有一个部员有监察评测部长的权力。请给出体现这两种关系<即领导和评测)的两张互参照的表的定义。eUts8ZQVRdcreatetableleader(sidchar(9>,snamevarchar(20>,myleaderchar(9>primarykey(sid>>createtablemonitor(sidchar(9>,snamevarchar(20

31、>,mymonitorchar(9>,primarykey(sid>>altertableleaderaddconstraintFK_leaderforeignkey(myleader>referencessQsAEJkW5TMonitor(sid>goaltertableMonitoraddconstraintFK_Monitorforeignkey(mymonitor>referencesGMsIasNXkAleader(sid>""查询一QT-ZUl如509144U*才&*口曲£orintegritF.

32、QT-20120509lddDAdBini5tratoraltertableleaderaddconstraintM口nitcir(宫id)|leaderfureignkey(myL已ader)tuferencg3r(myiwriitur)ref.t日ncegaltertsibleNcriitoraddconstraintMonitorforeileader(sid)B命令已成功完成。111引束1列裴细dbo口口口|<俞dbo.FK_lfiader埃卜键约束)fildboPK_leader_177790F9(孑相关性二口触发器+二dbolisten_eoursfi-二|d'bo.

33、monitor+,列+,素引-,约束我dbo.FK_mcmtor19DFE9&Bfi,db.FK_Mmitor矽卜犍均束)FF_|相关性EtU触发器1H19.3用尸自定义完整性一、实验目的学习用户自定义约束,并实践用户自定义完整性,利用SQL查询分析器用短语NOTNULLUNIQUECHEC喉证用户定义完整性。TIrRGchYzg二、实验内容<1)创建worker表,包括Number(char(5>>,Name(char(8>>,Sex(char(1>>,Sage(int>,Department(char(20>>五个字段。请

34、自定义2个约束U1以及U2,其中U1规定Name字段唯一,U2规定sage(级别>字段的上限是28。7EqZcWLZNXCREATETABLEWORKERS(NUMBERCHAR(5>,NAMECHAR(8>CONSTRAINTU1UNIQUE,SEXCHAR(1>,SAGEINTCONSTRAINTU2CHECK(SAGE<=28>,DEPARTMENTCHAR(20>CREATETABLEWORKERS(NUMBERCHARNAMECHAR(8)CONSTRAINTUlUNIQUE,SEXCHARU),SA(;EINTCONSTRAINTU2CHE

35、CK(SAGE(二28),DEPARTMENTCHAR(20)命令已成功完成&网格圄消息T-9ni7nneiionmmT-9-ni9nc;nQi.<2)在worker表中插入一条合法记录。InsertworkersValues(1',nameuse,'M,21,'IM'>中查询QT-2012050S1440.uscna»c.QT-201205091InsertworkersValues(Jr/nameuse/Ml,?IMJ£0selecrt+frojriworkers1MiIEEF:KATESEXSAGEDEPARTMEN

36、T1_1naiaeiJiseM21II<3)练习插入违反U2约束的例子,U2规定元组的sage属性的值必须<=28。INSERTWORKERSVALUES('1','NAMEUSE1','M',29,'IM'>GOSELECT*FROMWORKERS中查询QT-20120&U9144U.usenaBe-Qr-2U120S091440Ud>ixiistrator一无标题1市jlnsertworkersHHValu&g口''nameuwTlgoselectrR,A,-r帕努器:消

37、息5狙,甄别IE,状态I,行1患髓墟句与COLUTOICHECK约束'UT冲突位冲突发生干粒据扉senane表M1RKERS',column'油;E'。所影响的行数为1行)护石洵尸三庙.旧石建;§nT-5m1号x刖1t1力依八1nr-ni个1sBih用力k占工二:.j.力n<4)去除U2约束altertableworkersdropu2<5)重新插入<3)中想要插入的数据,观察结果,分析原因INSERTWORKERSVALUES('1','NAMEUSE1','M',29,'IM

38、'>GOSELECT*FROMWORKERSmi.usenae.INSERTWORKERSVALUESfr/NAMEUSE1n2S,*IMJ)GOSELECT*FROMWORKERS<llNUMBERNAMESEXSMEDEPARTMENT11nameuseM21工M21NOEUSE1M29IIIn网格由消息批查询完成.9T-201205091440也<6)创建规则rule_sex,规定插入或更新的值只能是M或F,并绑定至Uworker的sex字段。CREATERULERULE_SEXASVALUEIN('F','M'>GOEXE

39、CSP_BINDRULERULE_SEX,WORKERS.SEX'M查询QT-2012051191440.u?enaBe.QT-20I205(191440Ad>inistrator3CREATERULERULE.SEXAS©VALUEINGOEXECSPBIWDRULERULE.SEX,1WORKERs.SEXn;I服务器:消息27国,颓16,状态服过程RULE.SEX,1数据库中已存在名为RULE_SEX'的对象*己将规则绑定到表的列上良网格面消息|批查询已完成但有错谍。QT-201205C91440(80)qT-201205C<7)练习违反规则rule

40、_sex的插入操作。INSERTWORKERSVALUES('1','NAMEUSER2'W,18,'M>INSERTworkersVALUES('I,/N&IEUSER2'1&,DC)<llt<8)加入约束U3,令sage的值>=0。ALTERTABLEWorkersADDCONSTRAINTU3CHECK(Sage>=0>lzq7IGf02Ew:"查询QT-2D12ObO9i44O.useita*e,QT-2012O509U4QAd»inisALTERTABLEW

41、orkersADDCONSTRAINTU3CHECK(Sage=0)|<.命令已成功完成。<1)1口桧pfi泊自r<9)加入规则R2,确保插入的记录的sage值在1到100之间,并绑定到sage属性上。CreateruleR2ASSAGEBEWTEEN1AND100GOSP_BINDRULER2,WORKERS.SAGECreateruleR2AS'©SAGEBET<EW1AND100GOSPBIHDRULER2,WORKERS.SAGE1已将规则绑定到表的列上.<国网格闺消且I9.4触发器一、实验目的通过实验加深对数据完整性的理解,学会创建和使

42、用触发器。二、实验内容<1)为worker表建立触发器T1,当插入或是更新表中数据时,保证所操作的记录的sage值大于0。CREATETRIGGERT1ONWORKERSFORUPDATE,INSERTASIF(SELECTSageFROMINSERTED><1BEGINPRINT'年龄必须是大于0的整数!操作失败!'ROLLBACKTRANSACTIONENDCREATETRIGGERT1ONWORKERSFORUPDATE,INSERTASIF(SELECTSageFROMIMSERTEDXlBEGINPRINT'年龄必须是大干口的整数!操作失败!

43、ROLLBACKTRANSACTIONEND前令已成功完成*n网格画消息此查询完成.QT-201205091440(80)<2)为worker表建立触发器T2,禁止删除编号为00001的CEOCREATETRIGGERT2ONWORKERSFORDELETEASIF(SELECTNUMERFROMDELETED>=00001'BEGINPRINT'禁止删除编号为00001的CEOROLLBACKTRANSACTIONEND*杳渐QT-70144(1,QT-201ZQ5U9M40Ad»>njffrator无标:*命令已成功完成。口网格国消辱WLL心:*

44、ft*rtAdAPi1aA网d,r*AXinmAGI9nMid,MA*L1<3)worker表中的人员的编号是唯一且不可改变的,创建触发器T3实现更新中编号的不可改变性。CREATETRIGGERT3ONWORKERSFORUPDATEASIFUPDATE(NUMBER>BEGINPRINT'不得更新该数据ROLLBACKTRANSACTIONEND查询QT-201205091440.usenaMe-QT-201205091440AdMiniStratCREATETRIGGERT3OHWORKERSFORUPDATEASIFUPDATENUMBERbegRnPR工NT

45、9;不得更新该数据ROLLBACKTRANSACTIOKEND命令已成功完成。魁网格圄消息肘杳询克能.ciT-kii9nKngiMnfAmk<4)练习违反T1触发器的约束的插入操作。INSERTWORKERSVALUES('00001','name2','F',0,'IM'><5)练习违反T1触发器的约束的更新操作-INSERTWORKERS-VALUES('00001','name2','F',12,'IM'>-GOUPDATEWORKERSSETSAGE=0WHERESAGE=12INSERTWRKERS-VALUESC0000PJ32/1K')GOUPDATEWORKERSSETSA£E-0晒咫SA&E-12一deleteWORKERS¥hercrriujnbcK'Q0001J服务三:泊且513,壕别】6,状态h行】列的插入或更期与先前

温馨提示

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

评论

0/150

提交评论