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

下載本文檔

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

文檔簡介

1、一、 實(shí)驗(yàn)?zāi)康?掌握Transact-SQL語句(CREATE RULE、DROP RULE)創(chuàng)建和刪除規(guī)則的方法。2掌握系統(tǒng)存儲過程sp_bindrule、sp_unbindrule綁定和解除綁定規(guī)則的操作方法,以及sp_help、sp_helptext查詢規(guī)則信息、sp_rename更名規(guī)則的方法。3掌握Transact-SQL語句(CREATE DEFAULT、DROPDEFAULT)創(chuàng)建和刪除默認(rèn)對象的方法。4掌握系統(tǒng)存儲過程sp_bindefault、sp_unbindefault綁定和解除綁定默認(rèn)對象的操作方法,以及sp_helptext查詢規(guī)則信息。5掌握SQL Server管理

2、平臺和Transact-SQL語句(CREATE TABLE、ALTER TABLE)定義和刪除約束的方法,并了解約束的類型。2、 實(shí)驗(yàn)內(nèi)容及步驟(1)為studentsdb數(shù)據(jù)庫創(chuàng)建一個規(guī)則,限制所輸入的數(shù)據(jù)為7位09的數(shù)字。 復(fù)制student_info表命名為stu_phone,在stu_phone表中插入一列,列名為“電話號碼”。完成以下代碼實(shí)現(xiàn)該操作。SELECT * INTO stu_phone FROM student_infoALTER TABLE stu_phone ADD CHAR(7) NULLstu_phone表結(jié)構(gòu)如圖1-10所示。圖1-10 stu_phone表結(jié)構(gòu)

3、 創(chuàng)建一個規(guī)則phone_rule,限制所輸入的數(shù)據(jù)為7位09的數(shù)字。實(shí)現(xiàn)該規(guī)則的代碼為CREATE phone_ruleASphone LIKE 0-90-90-90-90-90-90-9 使用系統(tǒng)存儲過程sp_bindrule將phone_rule規(guī)則綁定到stu_phone表的“電話號碼”列上。實(shí)現(xiàn)該操作的代碼為sp_bindrule ,stu_phone.電話號碼 輸入以下代碼,進(jìn)行一次插入操作: INSERT INTO stu_phone(學(xué)號,姓名,電話號碼) VALUES(0009,王國強(qiáng),1234yyy)產(chǎn)生以下出錯信息: 消息513,級別16,狀態(tài)0,第1 行列的插入或更新與

4、先前的CREATE RULE 語句所指定的規(guī)則發(fā)生沖突。該語句已終止。沖突發(fā)生于數(shù)據(jù)庫studentsdb,表dbo.stu_phone,列電話號碼。語句已終止。試分析: 為什么會產(chǎn)生該出錯信息?如果要實(shí)現(xiàn)插入操作,應(yīng)修改INSERT INTO語句中的哪個值?phone_rule規(guī)則能否對其他操作(如DELETE)進(jìn)行規(guī)則檢查?(2)創(chuàng)建一個規(guī)則stusex_rule,將其綁定到stu_phone表的“性別”列上,保證輸入的性別值只能是“男”或“女”。(3)使用系統(tǒng)存儲過程sp_help查詢stusex_rule規(guī)則列表,使用sp_helptext查詢stusex_rule規(guī)則的文本,使用sp

5、_rename將stusex_rule規(guī)則更名為stu_s_rule。(4)刪除stu_s_rule規(guī)則。stu_s_rule(stusex_rule更名后規(guī)則名)是否仍然綁定在stu_phone表的“性別”列上?應(yīng)如何操作才能刪除它?(5)在studentdb數(shù)據(jù)庫中,建立日期、貨幣和字符等數(shù)據(jù)類型的默認(rèn)對象。 在查詢設(shè)計器中,完成以下代碼,創(chuàng)建默認(rèn)對象df_date、df_char、df_money。-創(chuàng)建日期型默認(rèn)對象df_dateCREATE df_dateAS 2009-4-12GO-創(chuàng)建字符型默認(rèn)對象df_charCREATE DEFAULT df_char unknownGO-創(chuàng)

6、建貨幣型默認(rèn)對象df_moneyCREATE DEFAULT AS $100GO 輸入以下代碼,在studentsdb數(shù)據(jù)庫中創(chuàng)建stu_fee數(shù)據(jù)表。CREATE TABLE stu_fee (學(xué)號 char(10) NOT NULL, 姓名 char(8) NOT NULL, 學(xué)費(fèi) money, 交費(fèi)日期 datetime, 電話號碼 char(7)表stu_fee的數(shù)據(jù)結(jié)構(gòu)如圖1-11所示。圖1-11 stu_fee的數(shù)據(jù)結(jié)構(gòu) 使用系統(tǒng)存儲過程sp_bindefault將默認(rèn)對象df_money、df_date、df_char分別綁定在stu_fee表的“學(xué)費(fèi)”、“交費(fèi)日期”、“電話號碼

7、”列上。 df_money,stu_fee.學(xué)費(fèi)GOsp_bindefault ,stu_fee.交費(fèi)日期GOsp_bindefault df_char,stu_fee.電話號碼GO 輸入以下代碼,在stu_fee表進(jìn)行插入操作: INSERT INTO stu_fee(學(xué)號,姓名) VALUES(0001,劉衛(wèi)平)INSERT INTO stu_fee(學(xué)號,姓名,學(xué)費(fèi)) VALUES(0001,張衛(wèi)民,$120)INSERT INTO stu_fee(學(xué)號,姓名,學(xué)費(fèi),交費(fèi)日期) VALUES(0001,馬東,$110,2006-5-12)分析stu_fee表中插入記錄的各列的值是什么?

8、完成以下代碼,解除默認(rèn)對象df_char的綁定,并刪除之。 stu_fee.電話號碼 DEFAULT df_char按同樣的方式,刪除默認(rèn)對象df_date、df_money。(6)為student_info表添加一列,命名為“院系”,創(chuàng)建一個默認(rèn)對象stu_d_df,將其綁定到student_info表的“院系”列上,使其默認(rèn)值為“信息院”,對student_info表進(jìn)行插入操作,操作完成后,刪除該默認(rèn)對象。(7)在studentsdb數(shù)據(jù)庫中用CREATE TABLE語句創(chuàng)建表stu_con,并同時創(chuàng)建約束。 創(chuàng)建表的同時創(chuàng)建約束。表結(jié)構(gòu)如圖1-12所示。圖1-12 要創(chuàng)建的表的結(jié)構(gòu)約束

9、要求如下: 將學(xué)號設(shè)置為主鍵(PRIMARY KEY),主鍵名為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 在stu_con表中插入的數(shù)據(jù)學(xué)號姓名性別出生日期家庭住址0009張小東1989-4-60010李梅女1983-8-50011王強(qiáng)1988-9-100012王強(qiáng)1989-6-3分析各約束在插入記錄時所起的作用,查看插入

10、記錄后表中數(shù)據(jù)與所插入的數(shù)據(jù)是否一致? 使用ALTER TABLE語句的DROP CONSTRAINT參數(shù)項(xiàng)在查詢設(shè)計器中刪除為stu_con表所建的約束。(8)用SQL Server管理平臺完成實(shí)驗(yàn)內(nèi)容7的所有設(shè)置。(9)在查詢設(shè)計器中,為studentsdb數(shù)據(jù)庫的grade表添加外鍵約束(FOREIGN KEY),要求將“學(xué)號”設(shè)置為外鍵,參照表為student_info,外鍵名稱為fk_sid。 使用系統(tǒng)存儲過程sp_help查看grade表的外鍵信息。 在grade表中插入一條記錄,學(xué)號為0100,課程編號為0001,分?jǐn)?shù)為78。觀察SQL Server會做何處理,為什么?如何解決所

11、產(chǎn)生的問題? 使用查詢設(shè)計器刪除grade表的外鍵fk_sid。三、實(shí)驗(yàn)結(jié)果1為studentsdb數(shù)據(jù)庫創(chuàng)建一個規(guī)則,限制所輸入的數(shù)據(jù)為7位09的數(shù)字。(1)復(fù)制學(xué)生表命名為stu_phone,在stu_phone表中插入一列,列名為“電話號碼”。完成以下代碼實(shí)現(xiàn)該操作。SELECT * INTO stu_phone FROM 學(xué)生表ALTER TABLE stu_phone ADD 電話號碼 CHAR(7)NULLstu_phone表結(jié)構(gòu)如圖1-10所示。圖1-10 stu_phone表結(jié)構(gòu)(2)創(chuàng)建一個規(guī)則phone_rule,限制所輸入的數(shù)據(jù)為7位09的數(shù)字create rule ph

12、one_ruleas 電話號碼 like 0-90-90-90-90-90-90-9(3)使用系統(tǒng)存儲過程sp_bindrule將phone_rule規(guī)則綁定到stu_phone表的“電話號碼”列上。sp_bindrule phone_rule ,stu_phone.電話號碼(4) 輸入以下代碼,進(jìn)行一次插入操作: INSERT INTO stu_phone(學(xué)號,姓名,電話號碼) VALUES(0009,王國強(qiáng),1234yyy)產(chǎn)生以下出錯信息: 消息513,級別16,狀態(tài)0,第1 行列的插入或更新與先前的CREATE RULE 語句所指定的規(guī)則發(fā)生沖突。該語句已終止。沖突發(fā)生于數(shù)據(jù)庫stu

13、dentsdb,表dbo.stu_phone,列電話號碼。語句已終止。試分析: 為什么會產(chǎn)生該出錯信息?如果要實(shí)現(xiàn)插入操作,應(yīng)修改INSERT INTO語句中的哪個值?phone_rule規(guī)則能否對其他操作(如DELETE)進(jìn)行規(guī)則檢查? 修改:INSERTINTOstu_phone(學(xué)號,姓名,電話號碼)VALUES(0009,王國強(qiáng),1234567)phone_rule規(guī)則可以對其他操作進(jìn)行規(guī)則檢查2創(chuàng)建一個規(guī)則stusex_rule,將其綁定到stu_phone表的“性別”列上,保證輸入的性別值只能是“男”或“女”。create rule stusex_ruleas 性別in(男,女)3

14、使用系統(tǒng)存儲過程sp_help查詢stusex_rule規(guī)則列表,使用sp_helptext查詢stusex_rule規(guī)則的文本,使用sp_rename將stusex_rule規(guī)則更名為stu_s_rule。sp_help stusex_ruleSp_helptext stusex_rulesp_renamestusex_rule,stu_s_rule4刪除stu_s_rule規(guī)則。 droprulestu_s_rule注意:stu_s_ rule為stusex_ rule更名后規(guī)則名,是否仍然綁定在stu_phone表的“性別”列上,應(yīng)如何操作才能刪除它。5在studentdb數(shù)據(jù)庫中,建立

15、日期、貨幣和字符等數(shù)據(jù)類型的默認(rèn)對象。(1)創(chuàng)建默認(rèn)對象df_date、df_char、df_money。創(chuàng)建日期型默認(rèn)對象df_date,默認(rèn)日期為2006-4-12。-創(chuàng)建日期型默認(rèn)對象df_dateCREATE DEFAULT df_dateAS 2006-4-12創(chuàng)建字符型默認(rèn)對象df_char,默認(rèn)字符為“unknown”-創(chuàng)建字符型默認(rèn)對象df_charCREATE DEFAULT df_charas unknown創(chuàng)建貨幣型默認(rèn)對象df_money,默認(rèn)為100元-創(chuàng)建貨幣型默認(rèn)對象df_moneyCREATE DEFAULT df_moneyAS $100(2)輸入以下代碼,在

16、studentsdb數(shù)據(jù)庫中創(chuàng)建stu_fee數(shù)據(jù)表。CREATE TABLE stu_fee (學(xué)號 char(10) NOT NULL, 姓名 char(8) NOT NULL, 學(xué)費(fèi) money, 交費(fèi)日期 datetime, 電話號碼 char(7)表stu_fee的數(shù)據(jù)結(jié)構(gòu)如圖1-11所示。圖1-11 stu_fee的數(shù)據(jù)結(jié)構(gòu) (3)使用系統(tǒng)存儲過程sp_bindehult將默認(rèn)對象df_date、df_char、df_money分別綁定在stu_fee表的“學(xué)費(fèi)”、“交費(fèi)日期”、“電話號碼”列上。sp_bindefault df_money,stu_fee.學(xué)費(fèi)GOsp_binde

17、fault df_date,stu_fee.交費(fèi)日期GOsp_bindefault df_char,stu_fee.電話號碼GO(4)輸入命令,在stu_fee表進(jìn)行插入操作:(學(xué)號,姓名) values (0001,劉衛(wèi)平)INSERT INTO stu_fee(學(xué)號,姓名) values(0001,劉衛(wèi)平)(學(xué)號,姓名,學(xué)費(fèi)) values (0001,張衛(wèi)民,$120)INSERT INTO stu_fee(學(xué)號,姓名,學(xué)費(fèi)) values(0001,張衛(wèi)民,$120)(學(xué)號,姓名,學(xué)費(fèi),交費(fèi)日期) values (0001,馬東,$110,2006-5-12)INSERT INTO s

18、tu_fee(學(xué)號,姓名,學(xué)費(fèi),交費(fèi)日期)VALUES(0001,馬東,$ 110,2006-5-12)分析stu_fee表中插入記錄的各列的值是什么?(5)完成以下代碼解除默認(rèn)對象df_char、df_date、df_money的綁定,并刪除之。sp_unbindefaultstu_fee.電話號碼dropDEFAULTdf_charGosp_unbindefaultstu_fee.交費(fèi)日期dropDEFAULTdf_dategosp_unbindefaultstu_fee.學(xué)費(fèi)dropDEFAULTdf_money6為學(xué)生表添加一列,命名為“院系”,創(chuàng)建一個默認(rèn)對象stu_d_df,將其綁

19、定到學(xué)生表的“院系”列上,使其默認(rèn)值為“信息院”,對學(xué)生表進(jìn)行插入操作,操作完成后,刪除該默認(rèn)對象。1)altertable學(xué)生表add院系varchar(8)2)createdefaultstu_d_dfas信息院gosp_bindefaultstu_d_df,學(xué)生表.院系go(3)sp_unbindefault學(xué)生表.院系7在studentsdb數(shù)據(jù)庫中用CREATE TABLE語句創(chuàng)建表stu_con,并同時創(chuàng)建約束。(1)創(chuàng)建表的同時創(chuàng)建約束。表結(jié)構(gòu)如圖1-12所示。圖1-12 要創(chuàng)建的表的結(jié)構(gòu)約束要求如下:將學(xué)號設(shè)置為主鍵(PRIMARY KEY),主鍵名為pk_sid。 為姓名添加

20、唯一約束(UNIQUE),約束名為uk_name。為性別添加默認(rèn)約束(DEFAULT),默認(rèn)名稱為df_sex,其值為“男”為出生日期添加屬性值約束(CHECK),約束名為ck_bday,其檢查條件為:出生日期1988-1-1。CREATE TABLE stu_con( 學(xué)號char(4),姓名char(8) , 性別char(2),出生日期datetime,家庭住址varchar(50),constraintPK_sidPRIMARYKEY(學(xué)號),constraintuk_nameUNIQUE(姓名),constraintck_bdaycheck(出生日期1988-1-1),)altert

21、ablestu_conaddconstraintdf_sexdefault男FOR性別(2)在stu_con表中插入如表1-1所示的數(shù)據(jù)記錄。 表1-1 在stu_con表中插入的數(shù)據(jù)學(xué)號姓名性別出生日期家庭住址0009張小東1989-4-60010李梅女1983-8-50011王強(qiáng)1988-9-100012王強(qiáng)1989-6-3分析各約束在插入記錄時所起的作用,查看插入記錄后表中數(shù)據(jù)與所插入的數(shù)據(jù)是否一致?INSERTINTOstu_con(學(xué)號,姓名,出生日期)values(0009,張小東,1989-4-6)INSERTINTOstu_con(學(xué)號,姓名,出生日期)values(0010,李梅,1983-8-5)消息547,級別16,狀態(tài)0,第1行INSERT語句與CHECK約束ck_bday沖突。該沖突發(fā)生于數(shù)據(jù)庫studen

溫馨提示

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

評論

0/150

提交評論