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