實(shí)驗(yàn)6-數(shù)據(jù)完整性_第1頁(yè)
實(shí)驗(yàn)6-數(shù)據(jù)完整性_第2頁(yè)
實(shí)驗(yàn)6-數(shù)據(jù)完整性_第3頁(yè)
實(shí)驗(yàn)6-數(shù)據(jù)完整性_第4頁(yè)
實(shí)驗(yàn)6-數(shù)據(jù)完整性_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)?zāi)康恼莆誘ransact-SQL語(yǔ)句(CREATERULE、DROPRULE)創(chuàng)建和刪除規(guī)則的方法。掌握系統(tǒng)存儲(chǔ)過(guò)程sp_bindrule、sp_unbindrule綁定和解除綁定規(guī)則的操作方法,以及sp_help、sp_helptext查詢規(guī)則信息、sp_rename更名規(guī)則的方法。掌握Transact-SQL語(yǔ)句(CREATEDEFAULT、DROPDEFAULT)創(chuàng)建和刪除默認(rèn)對(duì)象的方法。掌握系統(tǒng)存儲(chǔ)過(guò)程sp_bindefault、sp_unbindefault綁定和解除綁定默認(rèn)對(duì)象的操作方法,以及sp_helptext查詢規(guī)則信息。掌握SQLServer管理平臺(tái)和Transact-SQL語(yǔ)句(CREATETABLE、ALTERTABLE)定義和刪除約束的方法,并了解約束的類型。二、實(shí)驗(yàn)內(nèi)容及步驟〔1〕為studentsdb數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)規(guī)則,限制所輸入的數(shù)據(jù)為7位0~9的數(shù)字。復(fù)制student_info表命名為stu_phone,在stu_phone表中插入一列,列名為“ 號(hào)碼”。完成以下代碼實(shí)現(xiàn)該操作。SELECT*INTOstu_phoneFROMstudent_infoALTERTABLEstu_phoneADD CHAR(7)NULLstu_phone表結(jié)構(gòu)如圖1-10所示。學(xué)號(hào)姓名 性別出生日期富庭住址備注電話鋼0001劉衛(wèi)平男0002兆衛(wèi)民男1B80-10-0100:QD:00.0D0衡山市就鳳翳常號(hào)1980-L2-0200:00:00.ODD束陽(yáng)市八-北路25號(hào)JR1LLNULLJOJLLNULL圖1-10stu_phone表結(jié)構(gòu)創(chuàng)建一個(gè)規(guī)則phone_rule,限制所輸入的數(shù)據(jù)為7位0~9的數(shù)字。實(shí)現(xiàn)該規(guī)則的代碼為CREATE phone_ruleAS@phoneLIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'使用系統(tǒng)存儲(chǔ)過(guò)程sp_bindrule將phone_rule規(guī)則綁定到stu_phone表的“號(hào)碼”列上。實(shí)現(xiàn)該操作的代碼為sp_bindrule ,'stu_phone. 號(hào)碼'輸入以下代碼,進(jìn)行一次插入操作:INSERTINTOstu_phone(學(xué)號(hào),, 號(hào)碼)VALUES('0009','王國(guó)強(qiáng)','1234yyy')產(chǎn)生以下出錯(cuò)信息:消息513,級(jí)別16,狀態(tài)0,第1行列的插入或更新與先前的CREATERULE語(yǔ)句所指定的規(guī)則發(fā)生沖突。該語(yǔ)句已終止。沖突發(fā)生于數(shù)據(jù)庫(kù)'studentsdb',表'',列' 號(hào)碼'。語(yǔ)句已終止。試分析:為什么會(huì)產(chǎn)生該出錯(cuò)信息?如果要實(shí)現(xiàn)插入操作,應(yīng)修改INSERTINT0語(yǔ)句中的哪個(gè)值?phone_rule規(guī)則能否對(duì)其他操作〔如DELETE〕進(jìn)行規(guī)則檢查?〔2〕創(chuàng)建一個(gè)規(guī)則stusex_rule,將其綁定到stu_phone表的“性別”列上,保證輸入的性別值只能是“男”或“女”?!?〕使用系統(tǒng)存儲(chǔ)過(guò)程sp_help查詢stusex_rule規(guī)則列表,使用sp_helptext查詢stusex_rule規(guī)則的文本,使用sp_rename將stusex_rule規(guī)則更名為stu_s_rule。〔4〕刪除stu_s_rule規(guī)則。stu_s_rule〔stusex_rule更名后規(guī)則名〕是否仍然綁定在stu_phone表的“性另U”列上?應(yīng)如何操作才能刪除它?〔5〕在studentdb數(shù)據(jù)庫(kù)中,建立日期、貨幣和字符等數(shù)據(jù)類型的默認(rèn)對(duì)象。在查詢?cè)O(shè)計(jì)器中,完成以下代碼,創(chuàng)建默認(rèn)對(duì)象df_date、df_char、df_money。—?jiǎng)?chuàng)建日期型默認(rèn)對(duì)象df_dateCREATE df_dateAS'2009-4-12'GO--創(chuàng)建字符型默認(rèn)對(duì)象df_charCREATEDEFAULTdf_char 'unknown'GO--創(chuàng)建貨幣型默認(rèn)對(duì)象df_moneyCREATEDEFAULT AS$100GO輸入以下代碼,在studentsdb數(shù)據(jù)庫(kù)中創(chuàng)建stu_fee數(shù)據(jù)表。CREATETABLEstu_fee(學(xué)號(hào)char(10)NOTNULL,char(8)NOTNULL,學(xué)費(fèi)money,交費(fèi)日期datetime,號(hào)碼char(7))表stu_fee的數(shù)據(jù)結(jié)構(gòu)如圖1-11所示。學(xué)號(hào)學(xué)費(fèi)交費(fèi)日期電話號(hào)%圖1-11stu_fee的數(shù)據(jù)結(jié)構(gòu)使用系統(tǒng)存儲(chǔ)過(guò)程sp_bindefault將默認(rèn)對(duì)象df_money、df_date、df_char分別綁定在stu_fee表的“學(xué)費(fèi)”、“交費(fèi)日期”、“號(hào)碼”列上。 df_money,'stu_fee.學(xué)費(fèi)’GOsp_bindefault ,'stu_fee.交費(fèi)日期'GOsp_bindefaultdf_char,'stu_fee. 號(hào)碼'GO輸入以下代碼,在stu_fee表進(jìn)行插入操作:INSERTINTOstu_fee(學(xué)號(hào),)VALUES('OOO1','劉衛(wèi)平')INSERTINTOstu_fee(學(xué)號(hào),,學(xué)費(fèi))VALUES('OOO1','張衛(wèi)民',$120)INSERTINTOstu_fee(學(xué)號(hào),,學(xué)費(fèi),交費(fèi)日期)VALUES('0001','馬東',$110,'2006-5-12')分析stu_fee表中插入記錄的各列的值是什么?完成以下代碼,解除默認(rèn)對(duì)象df_char的綁定,并刪除之。 'stu_fee.號(hào)碼’ DEFAULTdf_char按同樣的方式,刪除默認(rèn)對(duì)象df_date、df_money?!?〕為student_info表添加一列,命名為“院系”,創(chuàng)建一個(gè)默認(rèn)對(duì)象stu_d_df,將其綁定到student_info表的“院系”列上,使其默認(rèn)值為“信息院”,對(duì)student_info表進(jìn)行插入操作,操作完成后,刪除該默認(rèn)對(duì)象?!?〕在studentsdb數(shù)據(jù)庫(kù)中用CREATETABLE語(yǔ)句創(chuàng)建表stu_con,并同時(shí)創(chuàng)建約束。①創(chuàng)建表的同時(shí)創(chuàng)建約束。表結(jié)構(gòu)如圖1-12所示。鑒據(jù)類型學(xué)號(hào)char4姓窯a性別char2岀主日期datetime&棗庭住址50圖1-12要?jiǎng)?chuàng)建的表的結(jié)構(gòu)約束要求如下:將學(xué)號(hào)設(shè)置為主鍵〔PRIMARYKEY〕,主鍵名為pk_sid。為添加唯一約束〔UNIQUE〕,約束名為uk_name。為性別添加默認(rèn)約束〔DEFAULT〕,默認(rèn)名稱為df_sex,其值為“男”。為出生日期添加屬性值約束〔CHECK〕,約束名為ck_bday,其檢查條件為:出生日期>'1988-1-1'。②在stu_con表中插入如表1-1所示的數(shù)據(jù)記錄。表1-1在stucon表中插入的數(shù)據(jù)學(xué)號(hào)性別出生日期家庭住址0009張小東1989-4-60010李梅女1983-8-50011王強(qiáng)1988-9-100012王強(qiáng)1989-6-3分析各約束在插入記錄時(shí)所起的作用,查看插入記錄后表中數(shù)據(jù)與所插入的數(shù)據(jù)是否一致?③使用ALTERTABLE語(yǔ)句的DROPCONSTRAINT參數(shù)項(xiàng)在查詢?cè)O(shè)計(jì)器中刪除為stu_con表所建的約束?!?〕用SQLServer管理平臺(tái)完成實(shí)驗(yàn)內(nèi)容7的所有設(shè)置?!?〕在查詢?cè)O(shè)計(jì)器中,為studentsdb數(shù)據(jù)庫(kù)的grade表添加外鍵約束〔FOREIGNKEY〕,要求將“學(xué)號(hào)”設(shè)置為外鍵,參照表為student_info,外鍵名稱為fk_sid。使用系統(tǒng)存儲(chǔ)過(guò)程sp_help查看grade表的外鍵信息。在grade表中插入一條記錄,學(xué)號(hào)為0100,課程編號(hào)為0001,分?jǐn)?shù)為78。觀察SQLServer會(huì)做何處理,為什么?如何解決所產(chǎn)生的問題?使用查詢?cè)O(shè)計(jì)器刪除grade表的外鍵fk_sid。三、實(shí)驗(yàn)結(jié)果為studentsdb數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)規(guī)則,限制所輸入的數(shù)據(jù)為7位0?9的數(shù)字。復(fù)制學(xué)生表命名為stu_phone,在stu_phone表中插入一列,列名為“號(hào)碼”。完成以下代碼實(shí)現(xiàn)該操作。SELECT*INTOstu_phoneFROM學(xué)生表ALTERTABLEstu_phoneADD號(hào)碼CHAR(7)NULLstu_phone表結(jié)構(gòu)如圖1-10所示。5竽號(hào)厲七口_0山■衛(wèi)f* (jtFbl1itu[fluvryLBill-stTXttSJratEJia電話碼WIX朗忻ww期和i市和^...m2flMi月眩暑市五■煒丁…WUiAUL加fl]99Gh&-]40;(MHK)踴fi噪大“MLflLtlfl勵(lì)11中W.n妣娥£X跑屮WWW砒皿耽“MAI19KO15Q1W.QQ卵TESUSf?l.”晰nuf立139□⑷】專口!MUHJEiFBifi山用..HUIiULCi\ULfVUl創(chuàng)建一個(gè)規(guī)則phone_rule,限制所輸入的數(shù)據(jù)為7位0?9的數(shù)字createrulephone_ruleas@號(hào)碼like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'⑶使用系統(tǒng)存儲(chǔ)過(guò)程sp_bindrule將phone_rule規(guī)則綁定到stu_phone表的“ 號(hào)碼”列上。spjbindrulephone_rule,'stu_phone. 號(hào)碼豆消息已將規(guī)則綁定到表的列-(4)輸入以下代碼,進(jìn)行一次插入操作:INSERTINTOstu_phone(學(xué)號(hào),, 號(hào)碼)VALUES('0009','王國(guó)強(qiáng)','1234yyy')產(chǎn)生以下出錯(cuò)信息:消息513,級(jí)別16,狀態(tài)0,第1行列的插入或更新與先前的CREATERULE語(yǔ)句所指定的規(guī)則發(fā)生沖突。該語(yǔ)句已終止。沖突發(fā)生于數(shù)據(jù)庫(kù)'studentsdb',表'',列' 號(hào)碼'。語(yǔ)句已終止。試分析:為什么會(huì)產(chǎn)生該出錯(cuò)信息?如果要實(shí)現(xiàn)插入操作,應(yīng)修改INSERTINTO語(yǔ)句中的哪個(gè)值?phone_rule規(guī)則能否對(duì)其他操作〔如DELETE〕進(jìn)行規(guī)則檢查?修改:INSERTINTOstu_phone(學(xué)號(hào),, 號(hào)碼)VALUES('0009','王國(guó)強(qiáng)','1234567')?1牝tiTi:XQz.:n|TT■*丄祀U(xiǎn)K衿*心嗎JiLL-3-i-xxeHJlefr二D禪咖sfiiw亦jit.?SACh'WH耳F尬町前口串刀視diipwn財(cái)MHAUi業(yè)JSOTomoL.mjr牴JtfJaAFii?4W4LUphone_rule規(guī)則可以對(duì)其他操作進(jìn)行規(guī)則檢查創(chuàng)建一個(gè)規(guī)則stusex_rule,將其綁定到stu_phone表的“性別”列上,保證輸入的性別值只能是“男”或“女”。createrulestusex_ruleas@性別in('男’,’女')-rjEMldbo.ph?ne_rul?d■ibu.ztusex_riilH使用系統(tǒng)存儲(chǔ)過(guò)程sp_help查詢stusex_rule規(guī)則列表,使用sp_helptext查詢stusex_rule規(guī)則的文本,使用sp_rename將stusex_rule規(guī)則更名為stu_s_rule。J結(jié)果消息Name□wn&rTy..匚re3ted_d3tetinn&1jstusex_ruledborule2012-05-0710:46:12.607sp_helpstusex_ruleJ結(jié)果匕消息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規(guī)則。-FZiMl-ddbii.phune_riiledroprulestu_s_rule注意:stu_s_rule為stusex_rule更名后規(guī)則名,是否仍然綁定在stu_phone表的“性別”列上,應(yīng)如何操作才能刪除它。5.在studentdb數(shù)據(jù)庫(kù)中,建立日期、貨幣和字符等數(shù)據(jù)類型的默認(rèn)對(duì)象。⑴創(chuàng)建默認(rèn)對(duì)象df_date、df_char、df_money。創(chuàng)建日期型默認(rèn)對(duì)象df_date,默認(rèn)日期為2006-4-12?!?jiǎng)?chuàng)建日期型默認(rèn)對(duì)象df_dateCREATEDEFAULTdf_dateAS'2006-4-12'創(chuàng)建字符型默認(rèn)對(duì)象df_char,默認(rèn)字符為“unknown”--創(chuàng)建字符型默認(rèn)對(duì)象df_charCREATEDEFAULTdf_charas'unknown'創(chuàng)建貨幣型默認(rèn)對(duì)象df_money,默認(rèn)為100元--創(chuàng)建貨幣型默認(rèn)對(duì)象df_moneyCREATEDEFAULTdf_moneyAS'$100'日口默認(rèn)值噌dbo.dfjchar龍]dbQ.df_date霸dbo.df_inoney〔2〕輸入以下代碼,在studentsdb數(shù)據(jù)庫(kù)中創(chuàng)建stu_fee數(shù)據(jù)表。CREATETABLEstu_fee(學(xué)號(hào)char(10)NOTNULL,char(8)NOTNULL,學(xué)費(fèi)money,交費(fèi)日期datetime,號(hào)碼char(7))表stu_fee的數(shù)據(jù)結(jié)構(gòu)如圖1-11所示。學(xué)號(hào)學(xué)費(fèi)交費(fèi)日期電話號(hào)碼圖1-11stu_fee的數(shù)據(jù)結(jié)構(gòu)?丿裳-WIN-L&4PA.LKOO7H...-EQLQuery】陰|?學(xué)號(hào) 姓名 芋資 交黃日期電話號(hào)碼f^Al NULLNULL(3)使用系統(tǒng)存儲(chǔ)過(guò)程sp_bindehult將默認(rèn)對(duì)象df_date、df_char、df_money分別綁定在stu_fee表的“學(xué)費(fèi)”、“交費(fèi)日期”、“ 號(hào)碼”列上。spjbindefaultdf_money,'stu_fee.學(xué)費(fèi)'GOspjbindefaultdf_date,'stu_fee.交費(fèi)日期'GOspjbindefaultdfjchar,'stujfee.號(hào)碼'GO占消息|已將默認(rèn)值綁定到列,(4)輸入命令,在stu_fee表進(jìn)行插入操作:(學(xué)號(hào),)values('0001','劉衛(wèi)平')INSERTINTOstu_fee(學(xué)號(hào),)values('0001','劉衛(wèi)平')〔學(xué)號(hào),,學(xué)費(fèi))values('0001','張衛(wèi)民',$120)INSERTINTOstu_fee(學(xué)號(hào),,學(xué)費(fèi))values('0001','張衛(wèi)民',$120)(學(xué)號(hào),,學(xué)費(fèi),交費(fèi)日期)values('0001',‘馬東‘,$110,'2006-5-12‘)INSERTINTOstu_fee(學(xué)號(hào),,學(xué)費(fèi),交費(fèi)日期)VALUES('0001','馬東',$110,'2006-5-12')分析stu_fee表中插入記錄的各列的值是什么?,令-dbcutii_fEeWIN^LB4FALKaO7H....-SQLQG&7^5ql*摘董學(xué)費(fèi)交費(fèi)日期電話冒碼勿任!豐20M/V120=00=00unkrtgwn0001弓遼民120,MODo;oo:(jqltknown0001110.00002OKW30:00:00uiknown*MJLLMilMILMJL1NULt(5)完成以下代碼解除默認(rèn)對(duì)象df_char、df_date、df_money的綁定,并刪除之。spjunbindefault'stujfee. 號(hào)碼'dropDEFAULTdfjcharGo

sp_unbindefault'stu_fee.交費(fèi)日期'dropDEFAULTdf_dategosp_unbindefault'stu_fee.學(xué)費(fèi)'dropDEFAULTdf_money6.為學(xué)生表添加一列,命名為“院系”,創(chuàng)建一個(gè)默認(rèn)對(duì)象stu_d_df,將其綁定到學(xué)生表的“院系”列上,使其默認(rèn)值為“信息院”,對(duì)學(xué)生表進(jìn)行插入操作,操作完成后,刪除該默認(rèn)對(duì)象。1〕altertable學(xué)生表add院系varchar(8)2〕createdefaultstu_d_dfas'信息院'gosp_bindefaultstu_d_df,'學(xué)生表.院系'go(3)sp_unbindefault'學(xué)生表.院系'性別堆日期性別堆日期家庭住址 看注陣系l^O/LOj'l0:00:MJ衙山市東鳳將丁…腹血NULL男1990/12/1東陽(yáng)匍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約束要求如下:將學(xué)號(hào)設(shè)置為主鍵(PRIMARYKEY),主鍵名為pk_sid。②為添加唯一約束(UNIQUE),約束名為uk_name。為性別添加默認(rèn)約束(DEFAULT),默認(rèn)名稱為df_sex,其值為“男”為出生日期添加屬性值約束(CHECK),約束名為ck_bday,其檢查條件為:出生日期>'1988-1-1'。CREATETABLEstu_con(學(xué)號(hào)char(4),char(8),性別char(2),出生日期datetime,家庭住址varchar(50),constraintPK_sidPRIMARYKEY(學(xué)號(hào)),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 團(tuán)〔2〕在stu_con表中插入如表1-1所示的數(shù)據(jù)記錄。表1-1在stucon表中插入的數(shù)據(jù)學(xué)號(hào)性別出生日期家庭住址0009張小東1989-4-60010李梅女1983-8-50011王強(qiáng)1988-9-100012王強(qiáng)1989-6-3分析各約束在插入記錄時(shí)所起的作用,查看插入記錄后表中數(shù)據(jù)與所插入的數(shù)據(jù)是否一致?INSERTINTOstu_con(學(xué)號(hào),,出生日期)values('0009','張小東','1989-4-6')INSERTINTOstu_con(學(xué)號(hào),,出生日期)values('0010','李梅','1983-8-5')消息547,級(jí)別16,狀態(tài)0,第1行INSERT語(yǔ)句與CHECK約束〃ck_bday〃沖突。該沖突發(fā)生于數(shù)據(jù)庫(kù)〃studentsdb〃,表"",column'出生日期'。語(yǔ)句已終止。INSERTINTOstu_con(學(xué)號(hào),,出生日期)valuesCOOll','王強(qiáng)','1988-9-10')INSERTINTOst

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論