【正文】
統(tǒng)表和數(shù)據(jù)字典 C、系統(tǒng)數(shù)據(jù)庫(kù)、用戶(hù)數(shù)據(jù)庫(kù)和數(shù)據(jù)字典 D、用戶(hù)數(shù)據(jù)庫(kù)和事務(wù)日志 13.下列哪些不屬于索引的類(lèi)型(D)?! 、單列索引 B、惟一索引 C、聚集索引 D、事務(wù)日志索引 14.下列SQL語(yǔ)句中,能夠完成并運(yùn)算的是(A)?! 、SELECT * FROM 籃球愛(ài)好者UNIONSELECT * FROM 足球愛(ài)好者 B、SELECT * FROM 籃球愛(ài)好者INTERSECTSELECT * FROM 足球愛(ài)好者 C、SELECT * FROM 籃球愛(ài)好者EXCEPTSELECT * FROM 足球愛(ài)好者 D、SELECT * FROM 籃球愛(ài)好者,足球愛(ài)好者 15.設(shè)學(xué)生表和課程表的結(jié)構(gòu)分別為(學(xué)號(hào),姓名)和(學(xué)號(hào),課程號(hào),成績(jī)),如果希望查詢(xún)出“成績(jī)大于90分的學(xué)生姓名”,則對(duì)應(yīng)的SQL語(yǔ)句是(D)?! 、SELECT 姓名 FROM 學(xué)生表 WHERE = AND 90 B、SELECT 姓名 FROM 課程表 = AND 90 C、SELECT 姓名 FROM 學(xué)生表,課程表 WHERE = OR 90 D、SELECT 姓名 FROM 學(xué)生表,課程表 WHERE = AND 90 二、填空題 1.?dāng)?shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)是指數(shù)據(jù)庫(kù)系統(tǒng)由外模式、模式和內(nèi)模式三級(jí)抽象模式構(gòu)成?! ?.備份是指將數(shù)據(jù)從硬盤(pán)復(fù)制到可移動(dòng)媒體上的過(guò)程。 3.“實(shí)體一聯(lián)系”方法是描述數(shù)據(jù)庫(kù)概念模型的主要方法,一般稱(chēng)這種方法為E-R方法(或E-R圖方法)?! ?.用戶(hù)使用SQL Server數(shù)據(jù)庫(kù)時(shí),一般需要經(jīng)過(guò)兩個(gè)安全性階段:身份驗(yàn)證和權(quán)限認(rèn)證?! ?.ER圖設(shè)計(jì)一般在數(shù)據(jù)庫(kù)設(shè)計(jì)的概念設(shè)計(jì)階段使用?! ∪?、判斷題(正確的在括號(hào)內(nèi)打上“√”,錯(cuò)誤的打上“╳”。) 1.能夠惟一表示數(shù)據(jù)表中的每條記錄的字段或者字段的組合稱(chēng)為主碼或主鍵(√)?! ?.SQL Server數(shù)據(jù)庫(kù)中的NULL值(空值)表示的是 “空格”或“0”值(╳) 3.一個(gè)不規(guī)范的關(guān)系模式通常會(huì)引發(fā)插入異常、刪除異常和更新異常,導(dǎo)致大量的數(shù)據(jù)冗余。(√) 4.根據(jù)索引的特點(diǎn),應(yīng)該對(duì)那些數(shù)據(jù)量大、查詢(xún)頻度較高、實(shí)時(shí)性要求強(qiáng)的基本表創(chuàng)建索引,(√) 5.?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式,建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng),有效存儲(chǔ)數(shù)據(jù),滿(mǎn)足用戶(hù)信息要求和處理要求。(√) 6.參照完整性規(guī)則通常是指在兩個(gè)參照和被參照關(guān)系中,參照關(guān)系中每條記錄的外鍵或者為空,或者等于被參照關(guān)系中某條記錄的主鍵。(√) 四、簡(jiǎn)述題 1.請(qǐng)簡(jiǎn)要說(shuō)明視圖的概念和作用 參考答案:視圖是在基本表或其他視圖上建立的表,它的結(jié)構(gòu)和內(nèi)容都來(lái)自某個(gè)基本表,是依據(jù)基本表存在而存在的。刪除一個(gè)視圖時(shí),不會(huì)對(duì)基本表產(chǎn)生任何影響,但當(dāng)刪除一張基本表時(shí),與之相關(guān)聯(lián)的視圖就會(huì)自動(dòng)被刪除。其作用主要是:(1)視圖是經(jīng)過(guò)預(yù)編譯的SELECT語(yǔ)句,存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器端,因此執(zhí)行視圖比從客戶(hù)端直接執(zhí)行SELECT語(yǔ)句速度更快、效率更高一些。(2)視圖屬于用戶(hù)模式范疇,在實(shí)際中,一般的用戶(hù)不一定具有SELECT語(yǔ)句方面的專(zhuān)門(mén)知識(shí),從用戶(hù)友好性角度來(lái)說(shuō),視圖更便于用戶(hù)使用。(3)利用視圖可以簡(jiǎn)化的形式表達(dá)復(fù)雜的SELECT語(yǔ)句組,如嵌套查詢(xún)等。 2.什么是函數(shù)依賴(lài)與函數(shù)決定,請(qǐng)舉例說(shuō)明 參考答案: 設(shè)一個(gè)關(guān)系為R,X和Y是它的兩個(gè)屬性集。若對(duì)于X上的每個(gè)值都有Y上的一個(gè)惟一值與之對(duì)應(yīng),則稱(chēng)X和Y具有函數(shù)依賴(lài)關(guān)系,并稱(chēng)X函數(shù)決定Y,或稱(chēng)Y函數(shù)依賴(lài)于X,稱(chēng)X為決定因素?! 〖僭O(shè)一個(gè)職工關(guān)系為(職工號(hào),姓名,性別,年齡,職務(wù)),職工號(hào)用來(lái)標(biāo)識(shí)每個(gè)職工,選作該關(guān)系的主鍵。我們可以從以下兩方面理解函數(shù)依賴(lài)的概念:首先,對(duì)于該關(guān)系中每個(gè)職工的職工號(hào),都對(duì)應(yīng)著姓名屬性中的惟一值,即該職工的姓名,或者說(shuō)一個(gè)職工的姓名由其職工號(hào)惟一確定,所以稱(chēng)職工號(hào)函數(shù)決定姓名,或稱(chēng)姓名函數(shù)依賴(lài)于職工號(hào)。其次,除職工號(hào)外,其他屬性都不能成為決定因素形成函數(shù)依賴(lài),因?yàn)閷?duì)于它們的每個(gè)屬性值,都可能對(duì)應(yīng)另一屬性的多個(gè)不同的取值,比如對(duì)于性別屬性的一個(gè)取值“男”就會(huì)對(duì)應(yīng)多個(gè)而不是一個(gè)職工號(hào)?! ?.請(qǐng)簡(jiǎn)要說(shuō)明存儲(chǔ)過(guò)程的概念和優(yōu)點(diǎn)?! ⒖即鸢福骸 〈鎯?chǔ)過(guò)程(Stored Procedure)是一組預(yù)先編譯好的,以一種可執(zhí)行的形式永久地存儲(chǔ)在數(shù)據(jù)中的SQL代碼。 使用存儲(chǔ)過(guò)程的好處可歸納為以下幾點(diǎn):(a)執(zhí)行速度快。在經(jīng)過(guò)第一次調(diào)用以后,就駐留在內(nèi)存中,不必再經(jīng)過(guò)編譯和優(yōu)化;(b)模塊化的程序設(shè)計(jì)。經(jīng)過(guò)了一次創(chuàng)建以后,可以被調(diào)用無(wú)數(shù)次;(c)減少網(wǎng)絡(luò)流量;(d)保證系統(tǒng)的安全性。 五、綜合應(yīng)用題 1.設(shè)有有以下基本表:(1)供應(yīng)商表(供應(yīng)商編號(hào),供應(yīng)商名稱(chēng),供應(yīng)商所在城市);(2)零件表(零件編號(hào),零件名稱(chēng),零件顏色,零件重量);(3)工程項(xiàng)目表(工程編號(hào),工程名稱(chēng),工程所在城市);(4)工程供貨表(工程編號(hào),供應(yīng)商編號(hào),零件編號(hào),零件數(shù)量)?! ∮肧QL語(yǔ)言寫(xiě)出下列查詢(xún)語(yǔ)句, ?。?)查詢(xún)所有工程的全部細(xì)節(jié): SELECT * FROM 工程項(xiàng)目表 (2)查詢(xún)所在城市為上海的所有工程的全部細(xì)節(jié) SELECT * FROM 工程項(xiàng)目表 WHERE 工程所在城市=’上?! 。?)查詢(xún)重量最輕的零件代號(hào) SELECT 零件編號(hào)FROM 零件表 WHERE 零件重量= (SELECT MIN(零件重量) FROM 零件表) ?。?)查詢(xún)?yōu)楣こ叹幪?hào)為“JG2008001”的工程提供零件的供應(yīng)商編號(hào) SELECT 供應(yīng)商編號(hào) FROM 工程供貨表 WHERE 工程編號(hào)=’JG2008001’ ?。?)查詢(xún)?yōu)楣こ叹幪?hào)為“JG2008001”的工程提供零件編號(hào)為“P1”的供應(yīng)商編號(hào) SELECT 供應(yīng)商編號(hào) FROM 工程供貨表 WHERE 工程編號(hào)=’JG2008001’ AND 零件編號(hào)=’P1’ (6)查詢(xún)由供應(yīng)商編號(hào)為S1的供應(yīng)商提供零件的工程名稱(chēng) SELECT FROM 工程項(xiàng)目表,工程供貨表 WHERE = AND =’S1’ (7)查詢(xún)供應(yīng)商S1提供的零件的顏色 SELECT ,工程供貨表 WHERE = AND =’S1’ ?。?)查詢(xún)?yōu)樗诔鞘袨樯虾5墓こ烫峁┝慵墓?yīng)商編號(hào) SELECT DISTINCT FROM 工程項(xiàng)目表,工程供貨表 WHERE = AND =’上海’ 2.用SQL語(yǔ)句創(chuàng)建簡(jiǎn)單數(shù)據(jù)表 設(shè)有兩個(gè)關(guān)系(1)教師關(guān)系T,包括教師編號(hào)TNo,姓名TN,系別TD,職稱(chēng)RANK;(2)課程關(guān)系C,包括課程號(hào)CNo,課程名CN。教師編號(hào)和課程號(hào)分別是上述兩個(gè)關(guān)系的主鍵,請(qǐng)用SQL語(yǔ)句創(chuàng)建教師數(shù)據(jù)表T?! ⒖即鸢福骸 REATE TABLE T{ TNo INT PRIMARY KEY, TN CHAR(30), TD CHAR(20), RANK CHAR(20) }?! ?.用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)表 在上題基礎(chǔ)上,假設(shè)還存在教師教授課程關(guān)系TC,包括教師編號(hào)TNo和課程號(hào)CNo?! ∽⒁猓赫f(shuō)明主鍵碼和外鍵碼約束 參考答案: CREATE TABLE TC{ TNo INT, CNo INT, PRIMARY KEY (Tno,Cno), FOREIGN KEY (TNo) REFERENCES T(TNo), FOREIGN KEY (CNo) REFERENCES C(CNo) }。 4.利用SQL語(yǔ)句進(jìn)行查詢(xún) 在上題的基礎(chǔ)上,如果要查詢(xún)“張紅老師承擔(dān)的所有課程”,請(qǐng)寫(xiě)出對(duì)應(yīng)的SQL查詢(xún)語(yǔ)句。 參考答案: SELECT , FROM T,C,TC WHERE = AND = AND =’張紅’ 5.程序應(yīng)用題 設(shè)學(xué)生成績(jī)表的結(jié)構(gòu)為(學(xué)號(hào)、課程號(hào)、成績(jī)),程序運(yùn)行界面如圖1所示。進(jìn)入界面后,用戶(hù)首先選擇學(xué)號(hào)(Combo1)、課程號(hào)(Combo2),姓名(Text1)和課程名(Text2)從數(shù)據(jù)庫(kù)中自動(dòng)讀入;然后,用戶(hù)輸入對(duì)應(yīng)的成績(jī)(Text3),點(diǎn)擊“確認(rèn)”按鈕后,將結(jié)果插入到學(xué)生成績(jī)表中。請(qǐng)補(bǔ)充完成下列程序代碼。圖1“增加記錄”窗體運(yùn)行界面 Private Sub Command1_Click() ‘聲明一個(gè)記錄集對(duì)象 Dim ADOrs As New Recordset ‘將記錄集對(duì)象與已建立的數(shù)據(jù)庫(kù)聯(lián)接對(duì)象ADO綁定 =ADO ‘第一步:在學(xué)生成績(jī)表中查詢(xún)是否存在關(guān)鍵字相同的記錄 ?。?)拼寫(xiě)查詢(xún)字符串 strSQL =“” ?。?)執(zhí)行查詢(xún)語(yǔ)句 strSQL ‘第二步:如果關(guān)鍵字重復(fù),則退出程序 If Not Then MsgBox “記錄已存在,不能繼續(xù)增加” Exit Sub End If ‘第三步:將結(jié)果插入到學(xué)生成績(jī)表中 StrSQL=”Insert Into 學(xué)生成績(jī)表(學(xué)號(hào),課程號(hào),成績(jī))Values(‘ ”++” ‘,’ “++” ‘, “+Str(Val())+”)” StrSQL End Sub 參考答案及評(píng)分要點(diǎn): ‘第一步:在學(xué)生成績(jī)表中查詢(xún)是否存在關(guān)鍵字相同的記錄 strSQL=”Select * From 學(xué)生成績(jī)表 Where 學(xué)號(hào)=’ ”++” ‘ And 課程號(hào)=’ “++” ‘ “ StrSQL ‘第二步:如果關(guān)鍵字重復(fù),則退出程序 If Not Then MsgBox “記錄已存在,不能繼續(xù)增加” Exit Sub End If ‘第三步:將結(jié)果插入到學(xué)生成績(jī)表中 StrSQL=”Insert Into 學(xué)生成績(jī)表(學(xué)號(hào),課程號(hào),成績(jī))Values(‘ ”++” ‘,’ “++” ‘, “+Str(Val())+”)” StrSQL End Sub33 / 33