數(shù)據(jù)庫(kù)實(shí)驗(yàn)數(shù)據(jù)控制_第1頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)數(shù)據(jù)控制_第2頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)數(shù)據(jù)控制_第3頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn) 9 數(shù)據(jù)控制(完整性部分)實(shí)驗(yàn) 9 1 實(shí)體完整性一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)實(shí)體完整性的建立,以及實(shí)踐違反實(shí)體完整性的結(jié)果。二、實(shí)驗(yàn)內(nèi)容與要求( 1)在數(shù)據(jù)庫(kù)tempdbforintegrity 中建立表 Stu_Union ,包括 sno(char(5),sname(char(8) ssex(char(1) sage(int), sdept(char(20)五個(gè)列,對(duì) sno 進(jìn)行 主鍵約束,并且在沒(méi)有違反實(shí)體完整性的前提下插入并更新一條記錄CREATE TABLE Stu_Union(sno char(5),sname char(8),ssex char(1),sage int,sdept c

2、har(20)o熨站庫(kù)J dbJ ma弓$ mo斗9 msaI NorJ pubJ tenJ tem畸B圖dbo/hr*!J EyECOlumrisU XT CT !* Wr ITh d T*h *而 teBpdbforintegrity 中(在 u (local)上)的SF表列名索引丿鍵 關(guān)系如,CHECK 約束) 一一屬性廠曰:n il總:標(biāo)識(shí) 標(biāo)識(shí)種子1T-否數(shù)據(jù)類(lèi)型長(zhǎng)度允許空57rS7r1斗r20S表 uStu_Unionw 中的數(shù)據(jù)* 童畫(huà)是 utcMpdbfczinteerity中、u (local)上SUQisxiajhesseic.ge| sdept35張海M22信工|Q冊(cè)I

3、tj tJ yi*沒(méi)有什么異常,一切正常(2) 練習(xí)違反實(shí)體完整性的插入操作。表 u StuUnion中的數(shù)據(jù),J&置是 teapdbforinteerity中、u (local)上sno張縛I hAbqI信工無(wú)法插入(3) 練習(xí)違反實(shí)體完整性的更新操作。in sert stu_ unionvalues(12345,張海,M,22,信工)(4) 在數(shù)據(jù)庫(kù) tempdbforintegrity 中建立表 Scholarship,包括 MD(varchar(30), Stud (char(10), R_Money(int)三個(gè)。首先向該表插入數(shù)據(jù),練習(xí)當(dāng)與現(xiàn)有 的數(shù)據(jù)環(huán)境不等時(shí),無(wú)法建立實(shí)體完整性

4、以及參照完整性。create table Scholarship(MD varchar(30),Stu_id char(10),R_Mo ney int)insert Scholarshipvalues(what mea nin g,12345,10000)insert Scholarshipvalues( null,12346,10000);Scholarship中的扱ffi,樓匿是 teipdbf or integrity* 屮* * (local)* 上VI _IDT-yhat meanin辰_1讀12345123461000010000fx保存不完全在保存過(guò)程中遇到錯(cuò)誤.某些數(shù)齬庫(kù)對(duì)象

5、未被保存.Sch.ol &rkipJ 表-不能悠改義.ODBC 錯(cuò)誤:Mi crosoft OBBC SQL Server Driver SQL 鋰比無(wú)法將 Nl Mi crosoft ODBC SQL Server Driver SQL Server語(yǔ)旬已経止I創(chuàng)“一一 應(yīng),確定1 保存文本文件幫助年r器曇io(local)tenpdbForintegrityMS SQLCI1 - DatJ ToolsScholarship* 表-不能修改表。ODOC 錯(cuò)i吳:MicrosoftJODBC SQL Server Driuer|SQL Server無(wú)迭將 NULL 值插入歹 i 1 mid 1

6、,表 1 tenpdb For integrity .dbo .Tnp_Scholarship11 該刻不允 VF空值。INSERT失配MicrosoftODBC SQL Server DriverSQL Serveri句己終止實(shí)驗(yàn)9. 2參照完整性一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)建立外鍵,以及利用 FOREIGN KEYREFERENCES子句以及各種約束保證參照完整性。二、實(shí)驗(yàn)內(nèi)容(一)、參照完整性(1) 為練習(xí)參照完整性,在數(shù)據(jù)庫(kù)tempdbforintegrity中建立表 Course,包括eno(char(4), cname(varchar(50), cpoints (int)三歹列,令 eno 為

7、其主鍵;并且在表Course中插入數(shù)據(jù)。為下面的實(shí)驗(yàn)步驟做預(yù)先準(zhǔn)備。CREATE TABLE COURSE(CNO CHAR(4),CNAME V ARCHAR(50) ,CPOINTS INT, PRIMARY KEY(CNO)insert coursevalues(1,數(shù)據(jù)庫(kù),3)insert coursevalues(2,數(shù)學(xué),3)insert coursevalues(3,物理,4)(2) 在數(shù)據(jù)庫(kù)tempdbforintegrity中,建立表SC,包括sno, eno及grade三列。 令sno和eno分別為參照Stu_Union表以及Course表的外鍵,設(shè)定級(jí)聯(lián)刪除,并 令(sn

8、o, eno)為其主鍵。在不違反參照完整性的前提下,插入數(shù)據(jù)。CREATE TABLE SC(CNO CHAR(4),SNO CHAR(5),GRADE INTPRIMARY KEY(CNO,SNO),FOREIGN KEY (CNO) REFERENCES COURSE(CNO),FOREIGN KEY (SNO) REFERENCES STU_UNION(SNO),)INSERT SCVALUES(1,35,76)insert se(eno,sno,grade) values(2,35,88) insert se(eno,sno,grade) values(3,35,99)( 3)練習(xí)違反

9、參照完整性的插入數(shù)據(jù)。(4)在Stu_Union中刪除數(shù)據(jù),練習(xí)級(jí)聯(lián)刪除DELETEFROM STU_UNIONWHERE SNO=35屜坍需:消上.、丁換別 川 氏卷:.:黯騒嚴(yán)5呎工祕(mì)逸檳于覿據(jù)庫(kù)g叭曲沖廠表H,諭皿皿解決方案:CREATE TABLE SC(CNO CHAR(4),SNO CHAR(5),GRADE INTPRIMARY KEY(CNO,SNO),FOREIGN KEY (CNO) REFERENCES COURSE(CNO)ON DELETE CASCADE,FOREIGN KEY (SNO) REFERENCES STU_UNION(SNO)ON DELETE CAS

10、CADE,)TiPT 口 ThFROM STU_U1IIONWHERE SNO=! 35!(所影響的行數(shù)為1行)刪除成功(5)在Course中刪除數(shù)據(jù),練習(xí)級(jí)聯(lián)刪除DELETEFROM courseWHERE CNO=1所影響的行數(shù)為1行)(6) 用 alter table語(yǔ)句將 SC 表中的 on delete cascade改為 on delete restrict 重新 插入SC的數(shù)據(jù)。重復(fù)本實(shí)驗(yàn)中的(4)、(5),觀察結(jié)果,分析原因ALTER TABLE SCDROP CONSTRAINT FK_SC_Sno;ALTER TABLE SCADD CONSTRAINT FK_SC_Cno

11、 FOREIGN KEY(Cno) REFERENCES Course(Cno) ON DELETE RESTRICT(7) 用 alter table 語(yǔ)句將 SC 表中的 on delete cascade改為 on delete set NULL。 重新插入SC的數(shù)據(jù)。重復(fù)本實(shí)驗(yàn)中的(4)、(5),觀察結(jié)果,分析原因。alter TABLESCDROP CONSTRAINT FK_SC_CNOALTERADD CONSTRAINT FK_SC_CNO FOREIGN KEY (CNO)REFERENCES COURSE(CNO) ON DELETE SET NULL(二)、多重級(jí)聯(lián)刪除(

12、 1)為了練習(xí)多重級(jí)聯(lián)刪除, 建立 Stu_Card 表,包括 card_id (char(14), stu_id,remained_money (decimal(10,2)三列,令 stud 為參照 Stu_Union 表的外鍵,令 card_id 為其主鍵,并插入數(shù)據(jù)。insert stu_unionvalues 20102P / yuanan 22,7IW )insert stu_uriion嚴(yán)C 20103- rm , 22, - DI-)皿血進(jìn)insert stu_urLionvalues C*20T04 J 王四H 22,J DC go|select *fron stu_union

13、snosnamessexsagesdept120101zhanghaif21IM220102yuamanM22IM320103王三Nl22IM420104王四Nl22BIs網(wǎng)格圓消息批查詢(xún)完成-QT-201205091440 (8.0) QTTCREATE TABLE Stu_Card(cardd char(14),s no char(5),rema in ed_m oney decimal(10,2)primary key(cardd),foreig n key(s no )refere nces stu_ union(sno)-insert stu card-values(95588440

14、22312,20101,11111.11) -goinsert stu_cardvalues(9558844022313,20102,15000) goinsert stu_cardvalues(9558844022314,20103,11111) goinsert stu_cardvalues(9558844022315,20104,11112)goselect *from stu_card丄LlL I. i L ULL LIvalues 955884402231Z ,J 20101*, U11L 11) 一goinsert stucardvalues C 955S844022313V /

15、20102 15000)goinsert stu cardvalues (7 9558844022314 / 20103*, 11111)goinsert stu_cardvalues (* 955984402231,1 Z01D4 11112)goselect *card idsrtorejaained nioney195538440223122010111111. 11295586440223132010215000.00395538440223142010311111.00495588440223152010411112.00n網(wǎng)格卸消息批査詢(xún)芫成-QT-2C1E05O9144O(8,3

16、1-201205014401 訓(xùn)(2) 為了練習(xí)多重級(jí)聯(lián)刪除,建立ICBC_Card表,包括bank_id (char(20),stu_card_id, restored_money(decimal(10,2)三列,令 stu_card_id 為參照 Stu_Card 表的外鍵,令bank_id為其主鍵,并插入數(shù)據(jù)。create table ICBC_Card(bank_id char(20),stu_cardd char(14),restoredoney decimal(10,2).Primary key(ba nk_id),Foreig n key(stu_card_id) refere

17、nces stu_card(cardd)in sert ICBC_cardvalues(1,9558844022312,11111.11)goin sert ICBC_cardvalues(2,9558844022313,15000)go insert ICBC card values(3,9558844022314,1111) goin sert ICBC_cardvalues(4,9558844022315,11112) goselect *from ICBC cardiJIbank idstu card idrest ored jnoney1I955834402231211111. 11

18、22956884402231315000. 003395533440223141111.0044955884402231511112.00口網(wǎng)格SP消息批查詢(xún)完成-QT-201205061440 . 0) qi-201205091440ini tra(3) 通過(guò)刪除 Stu_Union 表中的一條記錄,觀察 Stu_Union、Stu_Carc、CBC_Card三個(gè)表的多重級(jí)聯(lián)刪除alter TABLE stu_cardDROP CONSTRAINT FK_stu_card_SNOGOALTER TABLE stu_cardADD CONSTRAINT FK_stu_card_SNO FORE

19、IGN KEY (SNO)REFERENCES STU_UNION(SNO) ON DELETE CASCADEALTER TABLE icbc cardADD CONSTRAINT FK_icbc_card_stu_cardd FOREIGN KEY (stu_cardd)EREFERENCES STU_card(card_id) ON DELETE CASCADE豐詢(xún)一QT-201:2l!jigILpdbf Drintccrity- QT-20I20S0I?I44i0Mdin.istrator 壬存:Si*delete sty_uniDnvrhett fti-r 2Q10!訶SBLect

20、=*f fpr Ftu.mionj stu_card? ICBC_cfirdwli&re stu unicin. sno stu 亡aici md ftu 亡古td亡axd Ld ICBC ctd. stu cucd id5 naniessexsagesdtp-i:cardidt ejiairitd mDTicybahk.idtTJLcardidrest甲22:M95588.022313201D21500l 00295588.022313|5Q王三22IM95568440223142010311JI.L 0039&588O223I4|1J壬四22IM9558844022315som11112,

21、 no49S5B8440223I6H1il曇Img20110220 LM20L04H網(wǎng)格D.Da:aD 3 jj 行 3列 3QT-20I2D5D9M如 (B. D) QI-2D12fl5a91DA4niM. Etra tcnpdlbfwing誓lly(三八表的互參照問(wèn)題及其解決方法(1) 建立教師授課和教師聽(tīng)課關(guān)系的兩張表,規(guī)定一個(gè)教師可以授多門(mén)課,但 是每門(mén)課程只能指定一個(gè)教師去授課,同時(shí),規(guī)定一門(mén)課程可以由多位老師聽(tīng)課, 但是每位老師只能聽(tīng)一門(mén)課程。所以要為兩張表建立相互之間的參照關(guān)系。create table teacher_course( tno char(4), tn ame ch

22、ar(10),cno char(4),primary key(tno)create table listen_course(tno char(4),tname char(10),cno char(4),primary key(cno,tname)alter table listen_courseadd constraint FK_listen_course foreign key(tno)references teacher_course(tno) goalter table teacher_courseadd constraint FK_teacher_course foreign key(

23、cno)references listen_course(cno)(2) 創(chuàng)建一個(gè)班里的學(xué)生互助表,規(guī)定:包括學(xué)生編號(hào),學(xué)生姓名,學(xué)生的幫 助對(duì)象,每個(gè)學(xué)生有且僅有一個(gè)幫助對(duì)象,幫助對(duì)象也必須是班里的學(xué)生。 create table student(sno char(10),cname char(20),helper char(20),primary key(sno)alter table studentadd constraint fk_student foreign key(helper) references student(helper)alter table studentadd c

24、onstraint fk_student foreign key helper references student helper:服務(wù)器:涓恿71TT&級(jí)別16, 惑 1. tf 1在被引用表? studentR中沒(méi)有與外錢(qián)k student 的引用列的列表匹配的主鍥或候選捺。服#:消晶1750,領(lǐng)別險(xiǎn)I,行1未能創(chuàng)建約束*請(qǐng)奉閱前面的錯(cuò)誤信息。(3) 學(xué)校學(xué)生會(huì)的每個(gè)部門(mén)都有一個(gè)部長(zhǎng),每個(gè)部長(zhǎng)領(lǐng)導(dǎo)多個(gè)部員,每個(gè)部只 有一個(gè)部員有監(jiān)察評(píng)測(cè)部長(zhǎng)的權(quán)力。請(qǐng)給出體現(xiàn)這兩種關(guān)系(即領(lǐng)導(dǎo)和評(píng)測(cè))的兩張互參照的表的定義。create table leader (sid char(9),sn ame va

25、rchar(20),myleader char(9)primary key(sid)create table mon itor(sid char(9),sn ame varchar(20),mymon itor char(9), primary key(sid)alter table leaderadd con stra int FK_leader foreig n key(myleader)refere ncesMo nitor(sid)go alter table Mon itoradd con stra int FK_Mon itor foreig n key(mymo ni tor)r

26、efere nces leader(sid)+a-ertable Muritor.Mcinitoi: foreign key (niyiftOTiil:or) HEfmfencee111二口口 口lfil dbo FK_leader_17mOF9 (dbo. FK_leadtr枚卜鍵約束)+ 軼性十口融發(fā)器| dbo. li Eten_cour5e dba. m曲 tor土 列+ _|索引I- _|約束+l+.fit dto FK_mciiitOr_19DFr%B fit dto FK_Mcnitcr 約束) _J相關(guān)性觸挖器II19. 3用戶(hù)自定義完整性一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)用戶(hù)自定義約束,并實(shí)踐

27、用戶(hù)自定義完整性,利用SQL查詢(xún)分析器用短語(yǔ)NOT NULL、UNIQUE、CHECK保證用戶(hù)定義完整性。二、實(shí)驗(yàn)內(nèi)容(1)創(chuàng)建 worker 表,包括 Number(char(5),Name(char(8), Sex(char(1), Sage(int),Department(char(20)五個(gè)字段。請(qǐng)自定義 2個(gè)約束U1以及U2,其中U1規(guī)定Name字段唯一,U2規(guī)定sage級(jí)別)字段的上限是28。CREATE TABLE WORKERS(NUMBER CHAR(5),NAME CHAR(8) CONSTRAINT U1 UNIQUE,SEX CHAR(1),SAGE INT CONST

28、RAINT U2 CHECK(SAGEin讓tratx 3CREATE RULE RULE.SEX AS VALUE IN ?Mr) GOEXEC SP BIWDRULE RULE.SEX, 1 WORKERs. SEXn ;esexpRULE_SES,仃 1已將規(guī)則綁定到表的列上茁網(wǎng)格EP消息批查詢(xún)己完成但有皓俁-QT-201205C9L440 (6 0) qT-201205C(7) 練習(xí)違反規(guī)則rule_sex的插入操作INSERT WORKERSVALUES( 1; NAMEUSER2 ;W,18,IM )INSERT workersVALUES (? r/NAJflEUSERa/r.

29、18, * IK)務(wù)需:清息8152,級(jí)別1&狀態(tài)出行1 將戟斷宇符串或二進(jìn)制數(shù)據(jù)。語(yǔ)句已終止。(8) 加入約束U3,令sage的值=0ALTER TABLE Workers ADD CONSTRAINT U3 CHECK (Sage=0)|li;查詢(xún)一QT-2D1205091440.useita*e,QT-201205091440AdinisALTER TABLE Workers ADD COKSTKAINT U3 CHECK (Sage-0)1命令已成功完成E 012 Ffl油曰廠sage(9) 加入規(guī)則R2,確保插入的記錄的sage值在1到100之間,并綁定到 屬性上。Create ru

30、le R2 AS SAGE BEWTEEN 1 AND100GOSP_BINDRULE R2, WORKERS.SAGECreate rule R2 AS 郵AGE BETVfEW 1 AND 100 GOSP BIHDRULE R2, F WORKERS. SAGE1理己將規(guī)則鄒定到表的列上。n岡榕xi謂自9. 4觸發(fā)器一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)驗(yàn)加深對(duì)數(shù)據(jù)完整性的理解,學(xué)會(huì)創(chuàng)建和使用觸發(fā)器。二、實(shí)驗(yàn)內(nèi)容(1為worker表建立觸發(fā)器T1,當(dāng)插入或是更新表中數(shù)據(jù)時(shí),保證所操作的 記錄的sage值大于0。CREATE TRIGGER T1 ON WORKERSFOR UPDATE,INSERTASIF

31、 (SELECT Sage FROM INSERTED)njff rator無(wú)標(biāo):*(3) worker表中的人員的編號(hào)是唯一且不可改變的,創(chuàng)建觸發(fā)器T3實(shí)現(xiàn)更新中編號(hào)的不可改變性。CREATE TRIGGER T3 ON WORKERSFOR UPDATEASIF UPDATE(NUMBER)BEGINPRINT不得更新該數(shù)據(jù)ROLLBACK TRANSACTIONEND查詢(xún)QT-201205091440. usenaMe-QT-201205091440AdMiniStratCREATE TRIGGER T3 OH WORKERS FOR UPDATEASIF UPDATE (NUMBEKPRINT 不得更新診數(shù)據(jù)ROLLBACK TRANSACTIOKEND命令已成功完成q圏網(wǎng)榕卻消息壯吉詢(xún)宗龍-口T-?tii?nF;nQiaan fA nl k(4) 練習(xí)違反T1觸發(fā)器的約束的插入操作。INSERT WORKERSVALUES(00001, name2,F,0,IM)(5) 練習(xí)違反T1觸發(fā)器的約束的更新操作-INSERT WORKERS-VALUES(00001, name2,F,12,IM)-GOUPDATE WORKERSSET SAGE=0WHERE SAGE=12(6)練習(xí)違反T2觸發(fā)器的約束的插入操作-INSERT WORKERS -VALUES(000

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論