《2019年電大本科《數(shù)據(jù)庫應(yīng)用技術(shù)》試題簡述題附答案備考電大資料》由會(huì)員分享,可在線閱讀,更多相關(guān)《2019年電大本科《數(shù)據(jù)庫應(yīng)用技術(shù)》試題簡述題附答案備考電大資料(23頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
2019年電大本科《數(shù)據(jù)庫應(yīng)用技術(shù)》試題簡述題附答案
簡述題
1.關(guān)系完整性的主要內(nèi)容是什么?為什么要保證關(guān)系的完整性?
關(guān)系完整性就是關(guān)系模型中數(shù)據(jù)的正確性、一致性和有效性。關(guān)系完整性又包括實(shí)體完整性、參照完整性和用戶定義的完整性三個(gè)方面。只有保證了關(guān)系的完整性,才能使數(shù)據(jù)庫中的數(shù)據(jù)正確、一致和有效。
2.什么是嵌入式SQL,它有哪些用途?
嵌入式SQL語言是將SQL語句直接嵌入到程序的源代碼中,與其他程序設(shè)計(jì)語言語句混合。
嵌入式SQL的用途:它是數(shù)據(jù)庫應(yīng)用程序的一種開發(fā)方法。是一種應(yīng)用程序進(jìn)行數(shù)據(jù)庫訪問時(shí)所采取的編程式數(shù)據(jù)庫語言。
3.請簡要說明視圖的概念和作用
視圖是在基本表或其他視圖上建立的表,它的結(jié)構(gòu)和內(nèi)容都來自某個(gè)基本表,是依據(jù)基本表存在而存在的。刪除一個(gè)視圖時(shí),不會(huì)對基本表產(chǎn)生任何影響,但當(dāng)刪除一張基本表時(shí),與之相關(guān)聯(lián)的視圖就會(huì)自動(dòng)被刪除。
其作用主要是:(1)視圖是經(jīng)過預(yù)編譯的SELECT語句,存儲(chǔ)在數(shù)據(jù)庫服務(wù)器端,因此執(zhí)行視圖比從客戶端直接執(zhí)行SELECT語句速度更快、效率更高一些。(2)視圖屬于用戶模式范疇,在實(shí)際中,一般的用戶不一定具有SELECT語句方面的專門知識(shí),從用戶友好性角度來說,視圖更便于用戶使用。(3)利用視圖可以簡化的形式表達(dá)復(fù)雜的SELECT語句組,如嵌套查詢等。
4.什么是函數(shù)依賴與函數(shù)決定,請舉例說明
設(shè)一個(gè)關(guān)系為R,X和Y是它的兩個(gè)屬性集。若對于X上的每個(gè)值都有Y上的一個(gè)惟一值與之對應(yīng),則稱X和Y具有函數(shù)依賴關(guān)系,并稱X函數(shù)決定Y,或稱Y函數(shù)依賴于X,稱X為決定因素
假設(shè)一個(gè)職工關(guān)系為(職工號(hào),姓名,性別,年齡,職務(wù)),職工號(hào)用來標(biāo)識(shí)每個(gè)職工,選作該關(guān)系的主鍵。我們可以從以下兩方面理解函數(shù)依賴的概念:首先,對于該關(guān)系中每個(gè)職工的職工號(hào),都對應(yīng)著姓名屬性中的惟一值,即該職工的姓名,或者說一個(gè)職工的姓名由其職工號(hào)惟一確定,所以稱職工號(hào)函數(shù)決定姓名,或稱姓名函數(shù)依賴于職工號(hào)。其次,除職工號(hào)外,其他屬性都不能成為決定因素形成函數(shù)依賴,因?yàn)閷τ谒鼈兊拿總€(gè)屬性值,都可能對應(yīng)另一屬性的多個(gè)不同的取值,比如對于性別屬性的一個(gè)取值“男”就會(huì)對應(yīng)多個(gè)而不是一個(gè)職工號(hào)
5. 請簡要說明存儲(chǔ)過程的概念和優(yōu)點(diǎn)。
存儲(chǔ)過程(StoredP rocedure)是一組預(yù)先編譯好的,以一種可執(zhí)行的形式永久地存儲(chǔ)在數(shù)據(jù)中的SQL代碼。
使用存儲(chǔ)過程的好處可歸納為以下幾點(diǎn):
(a)執(zhí)行速度快。在經(jīng)過第一次調(diào)用以后,就駐留在內(nèi)存中,不必再經(jīng)過編譯和優(yōu)化;
(b)模塊化的程序設(shè)計(jì)。經(jīng)過了一次創(chuàng)建以后,可以被調(diào)用無數(shù)次;
(c)減少網(wǎng)絡(luò)流量;(d)保證系統(tǒng)的安全性。
6. 請簡要說明關(guān)系規(guī)范化的必要性。
減少數(shù)據(jù)冗余、更新異常、插人異常、刪除異常
7. 為什么要使用事務(wù)?事務(wù)處理的作用是什么?
事務(wù)(Transaction)是并發(fā)控制的基本單位,它反映了現(xiàn)實(shí)世界中需要以一個(gè)完整的單位提交的一項(xiàng)工作。SQL Server通過事務(wù)機(jī)制,將邏輯相關(guān)的一組操作捆綁在一起,以便服務(wù)器保持?jǐn)?shù)據(jù)的完整性。它是SQL復(fù)雜程序設(shè)計(jì)必不可少的內(nèi)容。
舉例說,如果我們正在使用UPDATE語句同時(shí)將學(xué)生表、成績表中的學(xué)號(hào)“20030001”改為“20040001”。這個(gè)任務(wù)需要兩條UPDATE語句組成,即:
UPDATE 學(xué)生表 SET 學(xué)號(hào)=‘20040001’ WHERE 學(xué)號(hào)=‘20030001’
UPDATE 成績表 SET 學(xué)號(hào)=‘20040001’ WHERE 學(xué)號(hào)=‘20030001’
如果在執(zhí)行完第一個(gè)語句后,計(jì)算機(jī)突然斷電,而第二條語句還沒來得急執(zhí)行,數(shù)據(jù)出現(xiàn)了不一致怎么辦?這時(shí)候就需要用到SQL的事務(wù)控制功能了。
如果使用了SQL Server的事務(wù)控制機(jī)制,以上兩個(gè)問題均可獲得解決。在使用事務(wù)的情況下,SQL Server可以保證,所有的記錄要么全部處理,要么一行也不處理。如果修改了全部記錄的一半時(shí)服務(wù)器出錯(cuò)了,SQL Server會(huì)返回到以前未執(zhí)行UPDATE操作前的位置,清除它已經(jīng)修改過的數(shù)據(jù),這就是事務(wù)處理的作用。
8. 為什么要進(jìn)行數(shù)據(jù)備份?數(shù)據(jù)庫備份包括哪些主要內(nèi)容?
任何系統(tǒng)都不可避免會(huì)出現(xiàn)各種形式的故障,而某些故障可能會(huì)導(dǎo)致數(shù)據(jù)庫災(zāi)難性的損壞,所以做好數(shù)據(jù)庫的備份工作極為重要。備份可以創(chuàng)建在磁盤、磁帶等備份設(shè)備上,與備份對應(yīng)的是還原。
數(shù)據(jù)庫備份就是在某種介質(zhì)上(磁帶、磁盤等)存儲(chǔ)數(shù)據(jù)庫(或者其中一部分)的拷貝的過程。更嚴(yán)格意義上講,備份應(yīng)該是一種把數(shù)據(jù)從硬盤上復(fù)制到其他可移動(dòng)介質(zhì)上的操作過程。
一個(gè)完整的備份通常要包括三部分內(nèi)容,即系統(tǒng)數(shù)據(jù)庫、用戶數(shù)據(jù)庫和事務(wù)日志。
9. 請簡要說明SQL Server數(shù)據(jù)庫備份有哪幾種方式?
SQL Server提供了四種不同的方式:數(shù)據(jù)庫完全備份、增量備份、事務(wù)日志備份,以及數(shù)據(jù)庫文件和文件組備份。
10.請簡要說明開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)時(shí),結(jié)構(gòu)設(shè)計(jì)和行為設(shè)計(jì)的含義。
從系統(tǒng)開發(fā)的角度,數(shù)據(jù)庫應(yīng)用系統(tǒng)的建設(shè)工作包括結(jié)構(gòu)與行為兩個(gè)方面:(a)結(jié)構(gòu)設(shè)計(jì),著重描述數(shù)據(jù)庫的結(jié)構(gòu)及各數(shù)據(jù)庫對象間關(guān)系,要求在滿足應(yīng)用需求的前提下,盡可能地達(dá)到第三范式;(b)行為設(shè)計(jì),主要目的是描述對數(shù)據(jù)庫的操作動(dòng)作,這些行為和動(dòng)作將來要體現(xiàn)在應(yīng)用程序中,所以行為的設(shè)計(jì)主要是應(yīng)用程序的設(shè)計(jì)。根據(jù)系統(tǒng)的結(jié)構(gòu)和行為兩方面特性,系統(tǒng)設(shè)計(jì)開發(fā)分為兩個(gè)部分,一部分是作為數(shù)據(jù)庫應(yīng)用系統(tǒng)核心和基石的數(shù)據(jù)庫設(shè)計(jì),另一部分是相應(yīng)的數(shù)據(jù)庫應(yīng)用軟件的設(shè)計(jì)開發(fā),二者相輔相成,組成統(tǒng)一的數(shù)據(jù)庫工程。
什么是數(shù)據(jù)和數(shù)據(jù)處理?數(shù)據(jù)與信息的區(qū)別聯(lián)系是什么?
參考答案:
數(shù)據(jù)(Data)是一組表示數(shù)量、行動(dòng)和目標(biāo)的非隨機(jī)的可鑒別的符號(hào)。
數(shù)據(jù)處理通常包括查找、統(tǒng)計(jì)、分類、修改、計(jì)算、匯總等各種方法。
數(shù)據(jù)(Data)是一組表示數(shù)量、行動(dòng)和目標(biāo)的非隨機(jī)的可鑒別的符號(hào)。
信息(Information)是經(jīng)過加工的,能對接收者的行為和決策產(chǎn)生影響的、有價(jià)值的數(shù)據(jù)。
如果將數(shù)據(jù)比喻為原料,那么信息就是數(shù)據(jù)經(jīng)過加工而生產(chǎn)的產(chǎn)品,是有價(jià)值的數(shù)據(jù)。與原料和產(chǎn)品的概念相似,一個(gè)系統(tǒng)的產(chǎn)品可能是另一個(gè)系統(tǒng)的原料,那么一個(gè)系統(tǒng)的信息可能成為另一個(gè)系統(tǒng)的數(shù)據(jù)。
2.?dāng)?shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫系統(tǒng)之間到底是什么關(guān)系?
參考答案:
數(shù)據(jù)庫就是各種相關(guān)數(shù)據(jù)的集合和容器。數(shù)據(jù)庫所保存的數(shù)據(jù)是指長期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)必須按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可以被一定范圍內(nèi)的各種用戶共享。
數(shù)據(jù)庫管理系統(tǒng)是對數(shù)據(jù)庫進(jìn)行管理的系統(tǒng)軟件,位于用戶和操作系統(tǒng)之間,為用戶或應(yīng)用程序提供訪問數(shù)據(jù)庫的方法和工具。
廣義上,數(shù)據(jù)庫系統(tǒng)就是采用了數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng),一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。狹義上講,數(shù)據(jù)庫系統(tǒng)主要指數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng),由于這二者在應(yīng)用中的相互依賴性,所以在一般不引起混淆的情況下常常把數(shù)據(jù)庫系統(tǒng)簡稱為數(shù)據(jù)庫。
3.請描述一下SQL Server數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)。
參考答案:
SQL Server數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)包括物理存儲(chǔ)結(jié)構(gòu)和邏輯存儲(chǔ)結(jié)構(gòu)兩個(gè)層面。
在物理層面上,SQL Server數(shù)據(jù)庫是由兩個(gè)操作系統(tǒng)文件組成的,即數(shù)據(jù)文件和事務(wù)日志文件,它們的后綴分別是MDF和LDF。數(shù)據(jù)文件主要用于存儲(chǔ)數(shù)據(jù),事務(wù)日志文件主要用于存儲(chǔ)數(shù)據(jù)庫的更新情況等事務(wù)日志信息。
在邏輯層次上,數(shù)據(jù)庫是由表、視圖、存儲(chǔ)過程等一系列數(shù)據(jù)對象組成的。當(dāng)采用SQL Server企業(yè)管理器將上述數(shù)據(jù)庫文件“打開”后,就能看到數(shù)據(jù)庫的邏輯結(jié)構(gòu)了,如圖XXX所示。數(shù)據(jù)庫中的數(shù)據(jù)分別存儲(chǔ)在幾個(gè)不同的對象中,而這些對象是用戶在操作數(shù)據(jù)庫時(shí),實(shí)際能夠看到和接觸到的,屬于邏輯存儲(chǔ)結(jié)構(gòu)。常用的數(shù)據(jù)庫對象主要包括:表(Table)、索引(Index)、視圖(Views)、觸發(fā)器(Triggers)、存儲(chǔ)過程(Store Procedures)、缺?。―efault)、約束(Constraints)、用戶(Users)以及圖表(Diagram)和用戶自定義的數(shù)據(jù)類型等。在以后的章節(jié)中,我們將逐步學(xué)習(xí)這些對象的使用方法。
4.簡述關(guān)系模型的組成。
參考答案:
系模型是目前最重要的一種數(shù)據(jù)模型。關(guān)系數(shù)據(jù)庫系統(tǒng)采用關(guān)系模型作為數(shù)據(jù)的組織方式。關(guān)系模型由三部分組成:數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系的完整性。
數(shù)據(jù)結(jié)構(gòu)是指在關(guān)系模型中,無論是數(shù)據(jù)還是數(shù)據(jù)之間的聯(lián)系都是以二維表(關(guān)系)這一種簡單的結(jié)構(gòu)表示的,這即符合人們使用數(shù)據(jù)的習(xí)慣,同時(shí)也便于計(jì)算機(jī)實(shí)現(xiàn)。
關(guān)系操作是指關(guān)系代數(shù)(或等價(jià)的關(guān)系演算)中并、交、差、選擇、投影、連接等。關(guān)系模型給出了關(guān)系操作的能力和特點(diǎn),但不對DBMS的語言給出具體的語法要求。關(guān)系語言的特點(diǎn)是高度的非過程化。其操作方式的特點(diǎn)是集合操作,即操作的對象和結(jié)果是集合,稱為一次一集合的方式,而不是一次一個(gè)記錄的方式。
關(guān)系完整性包括實(shí)體完整性、參照完整性和用戶自己定義的完整性。實(shí)體完整性是保證數(shù)據(jù)庫中記錄的惟一性,即每個(gè)記錄的主鍵不能為空值,也不能與其他記錄的主鍵相同。參照完整性是保證表與表之間語意上的完整性,即當(dāng)一個(gè)表引用在另一個(gè)表中定義的實(shí)體時(shí),要保證這個(gè)實(shí)體的有效性。這兩種完整性是關(guān)系模型必須滿足的約束條件,應(yīng)該由關(guān)系系統(tǒng)自動(dòng)支持。而用戶自定義完整性反映了用戶的要求,是用戶自行定義的。
什么是SQL,請簡要說明它的組成和特點(diǎn)。
參考答案:
結(jié)構(gòu)化查詢語言,Structured Query Language,簡稱 SQL,是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL語言共分為四大類:數(shù)據(jù)定義語言,數(shù)據(jù)查詢語言,數(shù)據(jù)操縱語言,數(shù)據(jù)控制語言。它的特點(diǎn)包括:非過程化語言,統(tǒng)一的語言,是所有關(guān)系數(shù)據(jù)庫的公共語言。
2、索引的作用是什么?SQL Server有哪幾類索引,各自的特點(diǎn)是什么?
參考答案:
索引(Index)提供了一種快速訪問數(shù)據(jù)的途徑,索引是在基本表的列上建立的一種數(shù)據(jù)加對象,索引是為了加速查詢速度而創(chuàng)建的。
實(shí)際的索引通常是這兩大類5種方式的組合。
?。?)單列索引:對基本表的某一單獨(dú)的列進(jìn)行索引,是最簡單和最常用的索引類型,通常情況下,應(yīng)對每個(gè)基本表的主關(guān)鍵字建立單列索引。
(2)惟一索引:一旦在一個(gè)或多個(gè)列上建立了惟一索引,則不允許在表中相應(yīng)的列上插入任何相同的取值。使用惟一索引不但能提高查詢性能,還可以維護(hù)數(shù)據(jù)的完整性。
?。?)復(fù)合索引:是針對基本表中兩個(gè)或兩個(gè)以上列建立的索引。
(4)聚集索引:會(huì)改變基本表中記錄的物理存儲(chǔ)順序。即表中記錄的物理排序順序不再按插入的先后排列,而是根據(jù)索引列重新排序。
?。?)非聚集索引:表中記錄的物理順序與索引順序不同,表中的記錄仍按實(shí)際插入的先后順序排列,不按索引列排序。
3、什么是基本表?什么是視圖?視圖有什么特點(diǎn)?在什么情況下需要?jiǎng)?chuàng)建視圖?
參考答案:
表是一個(gè)由行、列組成的二維結(jié)構(gòu),通常把行稱做記錄,把列稱為字段。
視圖是由查詢數(shù)據(jù)庫表產(chǎn)生的,它其實(shí)是一個(gè)虛擬的表,它限制了用戶能看到和修改的數(shù)據(jù)。
視圖的特點(diǎn)是在基本表或其他視圖上建立的表,它的結(jié)構(gòu)和內(nèi)容都來自某個(gè)基本表,是依據(jù)基本表存在而存在的。刪除一個(gè)視圖時(shí),不會(huì)對基本表產(chǎn)生任何影響,但當(dāng)刪除一張基本表時(shí),與之相關(guān)聯(lián)的視圖就會(huì)自動(dòng)被刪除。
如果要限制用戶能夠看到的數(shù)據(jù)庫中的信息,可以使用視圖。
4、謂詞LIKE的作用是什么?
參考答案:
確定給定的字符串是否與指定的模式匹配。模式可以包含常規(guī)字符和通配符字符。模式匹配過程中,常規(guī)字符必須與字符串中指定的字符完全匹配。
5、如果創(chuàng)建一個(gè)數(shù)據(jù)庫其SQL語句是什么?
參考答案:
CREATE DATABASE 數(shù)據(jù)庫名稱
6、存儲(chǔ)過程的含義是什么?創(chuàng)建存儲(chǔ)過程的SQL語句是什么?
參考答案:
存儲(chǔ)過程(Stored Procedure)是一組預(yù)先編譯好的,以一種可執(zhí)行的形式永久地存儲(chǔ)在數(shù)據(jù)中的SQL代碼,在master數(shù)據(jù)庫中存儲(chǔ)了一些SQL Server事先定義好的系統(tǒng)存儲(chǔ)過程,通常以sp_xxxx做為存儲(chǔ)過程的名字。當(dāng)用戶創(chuàng)建數(shù)據(jù)庫時(shí),也會(huì)自動(dòng)生成一些事先定義好的存儲(chǔ)過程,通常以dt_xxxx做為名字。
創(chuàng)建存儲(chǔ)過程的SQL語句是:
?。?)語句格式:
CREATE PROC[EDURE] <存儲(chǔ)過程名> AS
?。?)語句功能:
創(chuàng)建一個(gè)存儲(chǔ)過程,多數(shù)是指利用SQL Server的Transact-SQL編寫的程序。
7、什么是事務(wù)?舉例說明事務(wù)處理的作用是什么?
參考答案:
事務(wù)(Transaction)是并發(fā)控制的基本單位,它反映了現(xiàn)實(shí)世界中需要以一個(gè)完整的單位提交的一項(xiàng)工作。SQL Server通過事務(wù)機(jī)制,將邏輯相關(guān)的一組操作捆綁在一起,以便服務(wù)器保持?jǐn)?shù)據(jù)的完整性。它是SQL復(fù)雜程序設(shè)計(jì)必不可少的內(nèi)容。
事務(wù)需要用戶根據(jù)實(shí)際業(yè)務(wù)規(guī)則定義,有一定的難度,但其原理比較簡單。舉例說,如果我們正在使用UPDATE語句同時(shí)對學(xué)生表、成績表中的學(xué)號(hào)”20030001”改為”20040001”。這個(gè)任務(wù)需要兩條UPDATE語句組成,即:
UPDATE 學(xué)生表 SET 學(xué)號(hào)=’20040001’ WHERE 學(xué)號(hào)=’20030001’
UPDATE 成績表 SET 學(xué)號(hào)=’20040001’ WHERE 學(xué)號(hào)=’20030001’
如果在執(zhí)行完第一個(gè)語句后,計(jì)算機(jī)突然斷電,而第二條語句還沒來得急執(zhí)行,數(shù)據(jù)出現(xiàn)了不一致怎么辦?這時(shí)候就需要用到SQL的事務(wù)控制功能了。
如果使用了SQL Server的事務(wù)控制機(jī)制,以上兩個(gè)問題均可獲得很了的解決。在使用事務(wù)的情況下,SQL Server可以保證,要么所有的記錄要么全部處理,要么一行也不處理。如果修改了全部記錄的一半時(shí)服務(wù)器出錯(cuò)了,SQL Server會(huì)返回到以前未執(zhí)行UPDATE操作前的位置,清除它已經(jīng)修改過的數(shù)據(jù),這就是事務(wù)處理的作用。
8、SQL Server有哪些數(shù)據(jù)類型,它們的主要用途是什么?
參考答案:
SQL Server提供了數(shù)值型、字符型、日期型、二進(jìn)制型、位型、雙字節(jié)型等6大類數(shù)據(jù)類型。
數(shù)據(jù)類型是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型。任何一種計(jì)算機(jī)語言都定義了自己的數(shù)據(jù)類型。
9、假設(shè)某教學(xué)管理數(shù)據(jù)庫有以下三張表,請寫出下列問題的SQL語句:
學(xué)生(學(xué)號(hào),姓名,年齡,性別)
課程(課程號(hào),課程名,任課教師)
成績(學(xué)號(hào),課程號(hào),成績)
?。?)如何在SQL Server上創(chuàng)建這三張表;
參考答案:
學(xué)生表:
create table 學(xué)生表 (
學(xué)號(hào) char (8) primary Key,
姓名 char(8),
年齡 int,
性別 bit)
課程表:
create table 課程表 (
課程號(hào) char (7) primary Key,
課程名 char(20),
任課教師 char (8))
成績表:
create table 成績表 (
學(xué)號(hào) char (8),
課程號(hào) char (7),
成績 Numeric (4,2))
?。?)查詢劉峰教師所授課程號(hào),課程名;
參考答案:
Select課程號(hào), 課程名 from課程表 where任課教師=’ 劉峰’
?。?)查詢年齡大于20歲的所有男同學(xué)的學(xué)號(hào)、姓名;
參考答案:
Select 學(xué)號(hào), 姓名 from 學(xué)生表 where 性別=1 and 年齡>20
?。?)查詢至少選修了兩門課程(含兩門)的學(xué)生學(xué)號(hào);
參考答案:
select 學(xué)號(hào) from 成績
group by 學(xué)號(hào)
having count(學(xué)號(hào))>=2
?。?)查詢王文芳同學(xué)選修的所有課程的課程號(hào);
參考答案:
Select 課程號(hào) from 成績表, 學(xué)生表
Where學(xué)生表.姓名=’ 王文芳’ and 學(xué)生表.學(xué)號(hào)=成績表.學(xué)號(hào)
(6)查詢王文芳同學(xué)不學(xué)的課程的課程號(hào);
參考答案:
select 課程號(hào) from 成績表
where 課程號(hào) not in (select 課程號(hào) from 學(xué)生表,成績表
where 學(xué)生表.姓名='王文芳' and 學(xué)生表.學(xué)號(hào)=成績表.學(xué)號(hào))
?。?)查詢所有上劉峰老師課程的學(xué)生學(xué)號(hào);
參考答案:
Select 學(xué)號(hào) from 成績表,課程表,學(xué)生表
Where 課程表.任課教師='劉世峰' and 課程表.課程號(hào)=成績表.課程號(hào) and 課程表.學(xué)號(hào)=成績表.學(xué)號(hào)
?。?)查詢所有選修“數(shù)據(jù)庫原理”的學(xué)生的學(xué)號(hào);
參考答案:
Select 學(xué)號(hào) from 成績表,課程表
where 課程表.課程名='數(shù)據(jù)庫技術(shù)' and 課程表.課程號(hào)=成績表.課程號(hào)
?。?)向?qū)W生表中插入一條記錄(’2003001’,’吳紅’,21,’女’);(1表示女,0表示男)
參考答案:
insert into 學(xué)生表 values ('2003001','吳紅','21',1)
?。?0)刪除三張表中所有學(xué)號(hào)為20020001的學(xué)生信息;
參考答案:
Delete from學(xué)生表 where 學(xué)號(hào)=’ >20020001’
Delete from學(xué)生表 where 學(xué)號(hào)=’ 20020001’
?。?1)把學(xué)號(hào)為20030002的學(xué)生的年齡改為22歲;
參考答案:
Update 學(xué)生表 set 年齡=’22’ where學(xué)號(hào)=’20030002’
設(shè)關(guān)系模式R有N個(gè)屬性,在模式R上可能成立的函數(shù)依賴有多少個(gè)?
參考答案:
函數(shù)依賴有N×(N-1)個(gè)
2.設(shè)有關(guān)系模式R(職工號(hào),職工名,項(xiàng)目號(hào),項(xiàng)目名,工資),假設(shè)一個(gè)職工可參加多個(gè)項(xiàng)目,在每個(gè)項(xiàng)目中各領(lǐng)一份工資。那么請回答以下問題:
?。?)請寫出這個(gè)關(guān)系模式的函數(shù)依賴和主關(guān)鍵字;
函數(shù)依賴包括:職工號(hào)→職工名,項(xiàng)目號(hào)→項(xiàng)目名,(職工號(hào),項(xiàng)目號(hào))→工資
主鍵為(職工號(hào),項(xiàng)目號(hào))
?。?)這個(gè)關(guān)系符合第幾范式,為什么?
這個(gè)關(guān)系符合第一范式,因?yàn)樗拿總€(gè)屬性都不可再分。
(3)請舉例說明,這個(gè)關(guān)系存在哪些問題;
這個(gè)關(guān)系沒有達(dá)到第二范式,可能出現(xiàn)數(shù)據(jù)冗余和操作異常。
例如,某個(gè)職工參與了多個(gè)項(xiàng)目的工作,他的職工號(hào)、職工名會(huì)重復(fù)多次存儲(chǔ)。同樣,如果一個(gè)項(xiàng)目有多名職工參加,項(xiàng)目號(hào)和項(xiàng)目名也會(huì)重復(fù)我次存儲(chǔ)。另外,如果現(xiàn)在增加了一個(gè)新的項(xiàng)目,但暫時(shí)還沒有安排職工參加,那么由于主鍵是(職工號(hào),項(xiàng)目號(hào)),這個(gè)項(xiàng)目的信息可能無法插入。
?。?)請把這個(gè)關(guān)系模式分解成3NF,并說明理由。
修改后的各個(gè)關(guān)系如下:
職工關(guān)系=(職工號(hào),職工名)
項(xiàng)目關(guān)系=(項(xiàng)目號(hào),項(xiàng)目名)
職工選擇項(xiàng)目關(guān)系=(職工號(hào),項(xiàng)目號(hào),工資)
?。ㄗⅲ捍颂幍墓べY是指職工參加某個(gè)項(xiàng)目得到的勞動(dòng)報(bào)酬)
3.關(guān)系完整性的主要內(nèi)容是什么?為什么要保證關(guān)系的完整性?
參考答案:
關(guān)系完整性就是關(guān)系模型中數(shù)據(jù)的正確性、一致性和有效性。關(guān)系完整性又包括實(shí)體完整性、參照完整性和用戶定義的完整性三個(gè)方面。
只有保證了關(guān)系的完整性,才能使數(shù)據(jù)庫中的數(shù)據(jù)正確、一致和有效。
4.SQL Server中進(jìn)行關(guān)系完整性的主要方法是什么,請寫出相應(yīng)的SQL語句。
參考答案:
1)SQL Server通過約束機(jī)制來實(shí)現(xiàn)數(shù)據(jù)庫完整性保護(hù)。主要包括:Primary Key約束、Foreign Key約束、Default約束、Unique約束、Check約束等。
Primary Key約束:
學(xué)號(hào) char (8) NOT NULL
PRIMARY KEY(學(xué)號(hào))
Foreign Key約束:
學(xué)號(hào) char (8) NOT NULL
REFERENCES 學(xué)生表(學(xué)號(hào))
Default約束:
成績 numeric(9,2) DEFAULT 0.00
Unique約束:
學(xué)號(hào) char (8) NOT NULL
UNIOQUE(學(xué)號(hào))
Check約束:
年齡 int CHECK (年齡)17 and 年齡<25)
2)使用規(guī)則實(shí)施數(shù)據(jù)的完整性。
創(chuàng)建規(guī)則的語法結(jié)構(gòu)如下:
CREATE RULE 規(guī)則名 AS 條件表達(dá)式
3)使用默認(rèn)實(shí)施數(shù)據(jù)完整性管理。
創(chuàng)建默認(rèn)的語法如下:
CREATE DEFAULT 默認(rèn)名 AS 默認(rèn)值
5.為什么要進(jìn)行規(guī)范化?規(guī)范化的相關(guān)理論是什么?請簡要說明。
參考答案:
為確保數(shù)據(jù)庫設(shè)計(jì)的正確性,在數(shù)據(jù)庫邏輯設(shè)計(jì)階段,常使用關(guān)系規(guī)范化理論來指導(dǎo)關(guān)系型數(shù)據(jù)庫的設(shè)計(jì)。其基本思想是,每個(gè)關(guān)系都應(yīng)滿足一定的規(guī)范,才能使關(guān)系模式設(shè)計(jì)合理,達(dá)到減少冗余,提高查詢效率的目的。
一個(gè)好的數(shù)據(jù)庫關(guān)系,應(yīng)該沒有數(shù)據(jù)冗余、更新異常、插入異常、刪除異常問題的存在,這就必須進(jìn)行規(guī)范化處理。
規(guī)范化使用的理論是函數(shù)依賴。
6.什么是一個(gè)“好”的關(guān)系模式,一個(gè)“不好”的關(guān)系模式有什么缺點(diǎn)?
參考答案:
“好”的關(guān)系模式通常是指符合第三范式要求的關(guān)系,“不好”的關(guān)系模式會(huì)存在數(shù)據(jù)冗余、更新異常、插入異常、刪除異常等問題。
7.請寫出一個(gè)符合第三范式的關(guān)系模式,并說明理由。
參考答案:
學(xué)生=(學(xué)生號(hào),姓名,性別,專業(yè))
課程=(學(xué)生號(hào),課程號(hào),成績)
選課=(課程號(hào),課程名,課程學(xué)分)
請簡要說明數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的步驟。
參考答案:
數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的步驟包括需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。
2.?dāng)?shù)據(jù)庫設(shè)計(jì)的目的是什么,請談?wù)勀愕睦斫狻?
參考答案:
數(shù)據(jù)庫設(shè)計(jì)指的是設(shè)計(jì)數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的技術(shù),是指對于一個(gè)給定的應(yīng)用環(huán)境,包括硬件環(huán)境和操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)等軟件環(huán)境,如何使用這個(gè)環(huán)境來表達(dá)用戶的要求,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及圍繞數(shù)據(jù)庫展開的應(yīng)用系統(tǒng),使之能夠有效地收集、存儲(chǔ)、操作和管理數(shù)據(jù),滿足企業(yè)組織中各類用戶的應(yīng)用需求(信息需求和處理需求)。
3.基本表設(shè)計(jì)的主要原則是什么,堅(jiān)持這些原則有什么好處?
參考答案:
基本表設(shè)計(jì)最主要的原則是關(guān)系規(guī)范化,盡可能達(dá)到第三范式。規(guī)范化有助于消除數(shù)據(jù)庫中的數(shù)據(jù)冗余,減少更新異常。規(guī)范化有好幾種形式,但第三范式通常被認(rèn)為在性能、擴(kuò)展性和數(shù)據(jù)完整性方面達(dá)到了最好平衡。簡單來說,遵守第三范式標(biāo)準(zhǔn)的數(shù)據(jù)庫的表設(shè)計(jì)原則是:“One Fact in One Place”(一個(gè)事實(shí)對應(yīng)一個(gè)地方),即某個(gè)表只包括其本身基本的屬性,當(dāng)不是它們本身所具有的屬性時(shí)需進(jìn)行分解。表之間的關(guān)系通過外鍵相連接。
4.進(jìn)行SQL Server數(shù)據(jù)庫設(shè)計(jì)時(shí),一般有哪些命名規(guī)則?
參考答案:
首先,命名的長度應(yīng)盡量充足。假設(shè)某企業(yè)現(xiàn)有職工在一千人以內(nèi),如果用數(shù)字表示職工號(hào)的話,職工號(hào)的長度為3位即可,它最大可以表示999個(gè)職工。但是,如果考慮到企業(yè)未來的發(fā)展,那么職工號(hào)最好設(shè)為4位,當(dāng)企業(yè)職工數(shù)目突破千人時(shí),根本無需重構(gòu)整個(gè)數(shù)據(jù)庫。
其次,小心保留詞。要保證字段名沒有與SQL等保留詞或者常用訪問方法名發(fā)生沖突。
最后,慎用使用觸發(fā)器。觸發(fā)器在保證數(shù)據(jù)完整性方面發(fā)揮著積極作用,但它同時(shí)也會(huì)帶來效率方面的問題,因此要慎用。觸發(fā)器的功能通常可以用其他方式實(shí)現(xiàn)。
5.什么是數(shù)據(jù)流程圖,數(shù)據(jù)字典的主要作用是什么,談?wù)勀愕睦斫狻?
參考答案:
數(shù)據(jù)流圖(Data Flow Diagram,簡記DFD),是在業(yè)務(wù)流程分析基礎(chǔ)上,描述實(shí)際數(shù)據(jù)流動(dòng)和加工過程的圖形表示法,它一般有4種符號(hào),即外部實(shí)體、數(shù)據(jù)流、加工和存儲(chǔ)。外部實(shí)體數(shù)據(jù)的來源和去向;數(shù)據(jù)流用帶箭頭的連線表示,反映數(shù)據(jù)的流動(dòng)方向;加工用橢圓、圓或方框代表(本教材利用圓形表示加工),表示對數(shù)據(jù)的加工處理動(dòng)作;存儲(chǔ)表示數(shù)據(jù)的存檔情況。
數(shù)據(jù)字典(Data Dictionary,簡記DD),是對數(shù)據(jù)流程圖中數(shù)據(jù)流和存儲(chǔ)結(jié)構(gòu)的描述。在數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)中,數(shù)據(jù)字典是表、視圖設(shè)計(jì)的主要依據(jù)。
6.什么是E-R圖,它的作用是什么?
參考答案:
E-R圖是E-R(實(shí)體-關(guān)系)方法的重要組成部分。E-R方法是描述概念模型的有力工具。E-R圖方法是一種有效的信息抽象方法。在E-R圖中,用長方形表示實(shí)體,用橢圓形表示屬性,用菱形表示聯(lián)系。在圖形內(nèi)標(biāo)識(shí)它們的名字,它們之間用無向線段相連,表示聯(lián)系的線段上標(biāo)明是哪種聯(lián)系。
它的作用是采用E-R圖模型將現(xiàn)實(shí)世界的信息結(jié)構(gòu)統(tǒng)一用實(shí)體、屬性以及實(shí)體之間的聯(lián)系來描述。
7.簡要說明需求分析階段的主要任務(wù)和目的。
參考答案:
需求分析階段的主要目的是回答“干什么”的問題。需要從多方面對擬開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)的企事業(yè)單位進(jìn)行調(diào)查,收集和分析各項(xiàng)應(yīng)用對信息和處理兩方面的需求。了解和掌握數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)對象(或稱用戶)的工作業(yè)務(wù)流程和每個(gè)崗位、每個(gè)環(huán)節(jié)的職責(zé),了解和掌握信息從開始產(chǎn)生或建立,到最后輸出、存檔或消亡所經(jīng)過的傳遞和轉(zhuǎn)換過程,了解和掌握各種人員在整個(gè)系統(tǒng)活動(dòng)過程中的作用;通過同用戶充分地交流和溝通,決定那些工作應(yīng)由計(jì)算機(jī)來做,哪些工作仍由手工來做,決定各種人員對信息和處理各有什么要求,對視屏操作界面和報(bào)表輸出格式各有什么要求,對數(shù)據(jù)(信息)的安全性(保密性)和完整性各有什么要求等等。需求分析階段的主要工作就是,通過調(diào)查從用戶處獲得對數(shù)據(jù)庫的下列需求。
信息需求:用戶將從數(shù)據(jù)庫中獲得的信息的內(nèi)容和性質(zhì),有信息要求導(dǎo)出數(shù)據(jù)要求,即在數(shù)據(jù)庫中存儲(chǔ)哪些數(shù)據(jù)。
處理需求:用戶要完成什么處理功能,對某種處理的執(zhí)行頻度、用戶要求的響應(yīng)時(shí)間,以及處理的方式是聯(lián)機(jī)處理還是批處理等。
安全性和完整性的約束
請簡要說明數(shù)據(jù)庫安全機(jī)制?
參考答案:
一個(gè)用戶訪問SQL Server必須要經(jīng)過4個(gè)層次的安全控制,操作系統(tǒng)的安全性;服務(wù)器的安全性;數(shù)據(jù)庫的安全性;表和列的安全性。從上述流程可以看出,用戶使用SQL Server時(shí),需要經(jīng)過兩個(gè)安全性階段:身份驗(yàn)證和權(quán)限認(rèn)證。
身份驗(yàn)證階段系統(tǒng)只檢驗(yàn)用戶是否有連接SQL Server實(shí)例的權(quán)力,如果身份驗(yàn)證通過了,只表示用戶可以連接SQL Server實(shí)例,否則系統(tǒng)將拒絕用戶的連接。然后需要檢驗(yàn)用戶是否有訪問服務(wù)器上數(shù)據(jù)庫的權(quán)限,為此需要授予每個(gè)數(shù)據(jù)庫中映射到用戶登錄的賬號(hào)訪問權(quán)限,權(quán)限認(rèn)證就可以控制用戶在數(shù)據(jù)庫中進(jìn)行的操作。
2.登錄賬號(hào)和用戶賬號(hào)的含義是什么?它們有什么區(qū)別聯(lián)系?
參考答案:
登錄賬號(hào)用于身份驗(yàn)證,使得用戶到達(dá)登錄到SQL Server服務(wù)器,屬于服務(wù)器層面,相當(dāng)于大門的鑰匙;用戶賬號(hào)用于權(quán)限驗(yàn)證,屬于數(shù)據(jù)庫層面,相當(dāng)于自己房間的鑰匙。用戶賬號(hào)在定義時(shí)便與一個(gè)登錄賬號(hào)相關(guān)聯(lián),即任何一個(gè)用戶賬號(hào)背后都有一個(gè)登錄賬號(hào)。
3.請簡要說明使用企業(yè)管理創(chuàng)建登錄賬號(hào)和用戶賬號(hào)的過程。
參考答案:
?。?)在SQL Server的企業(yè)管理器下,展開“SQL Server組”文件夾,找到需要建立登錄賬號(hào)的服務(wù)器并展開其文件夾,再展開“安全性”文件夾,在“登錄”選項(xiàng)上右擊鼠標(biāo),在出現(xiàn)的快捷菜單中單擊“新建登錄”菜單命令,打開“SQL Server登錄屬性->新建登錄”對話框。
?。?)SQL Server支持“Windows身份驗(yàn)證”和單擊“SQL Server身份驗(yàn)證”兩種認(rèn)證模式。選擇“SQL Server身份驗(yàn)證”單選鈕,在“名稱”文本框中輸入要?jiǎng)?chuàng)建的登錄賬號(hào)名稱,例如“mysa”,在“身份驗(yàn)證”選項(xiàng)組中,并輸入密碼。
?。?)設(shè)置完畢后,單擊“確定”按鈕,即可完成登錄賬號(hào)的創(chuàng)建。
接下來,開始創(chuàng)建用戶賬號(hào),基本方法是:
(1)在企業(yè)管理器中,展開SQL Server組及其服務(wù)器,在“數(shù)據(jù)庫”文件夾中,展開某一數(shù)據(jù)庫,例如“進(jìn)銷存”的文件夾,然后在“用戶”選項(xiàng)上右擊,在彈出的快捷菜單中選擇“新建數(shù)據(jù)庫用戶”命令,打開新建用戶對話框。
?。?)單擊“登錄名”下拉列表框右端的下拉箭頭,會(huì)看到剛剛創(chuàng)建的“mysa”登錄帳號(hào)。選擇“mysa”登錄賬號(hào),此時(shí)“用戶名”文本框中自動(dòng)顯示為“mysa”??梢愿摹坝脩裘蔽谋究蛑械挠脩裘?,也可以在“數(shù)據(jù)庫角色成員”列表框中選擇新建用戶應(yīng)該屬于的數(shù)據(jù)庫角色。
?。?)設(shè)置完畢后,單擊“確定”按鈕,即可在“進(jìn)銷存”數(shù)據(jù)庫中創(chuàng)建一個(gè)新的用戶賬號(hào)。如果不想創(chuàng)建用戶賬號(hào),單擊“取消”按鈕即可。
4.如何對用戶賬號(hào)進(jìn)行授權(quán)管理,一般有哪些權(quán)限,請簡要說明。
參考答案:
?。?)展開服務(wù)器組,然后展開服務(wù)器;展開“數(shù)據(jù)庫”項(xiàng),然后找到相關(guān)的數(shù)據(jù)庫,比如“進(jìn)銷存”;
?。?)展開“進(jìn)銷存”數(shù)據(jù)庫,根據(jù)對象類型,單擊表、視圖、存儲(chǔ)過程等對象,找到需要進(jìn)行授權(quán)管理的數(shù)據(jù)庫對象,比如“物資臺(tái)賬”表。
(3)右擊授予權(quán)限所在的對象,從彈出菜單中選擇“所有任務(wù)->管理權(quán)限”選項(xiàng);單擊“列出全部用戶/用戶定義的數(shù)據(jù)庫角色/public”選項(xiàng),然后選擇授予每位用戶的權(quán)限。其中,選中標(biāo)記表示授予權(quán)限。進(jìn)一步,通過本界面可完成列級(jí)的授權(quán)管理。
另外,也可以采用GRANT(授予權(quán)限)、DENY(拒絕權(quán)限)和REVOKE(撤消權(quán)限)等SQL語句完成授權(quán)管理。
5.為什么要進(jìn)行數(shù)據(jù)備份?數(shù)據(jù)庫備份包括哪些主要內(nèi)容?
參考答案:
任何系統(tǒng)都不可避免會(huì)出現(xiàn)各種形式的故障,而某些故障可能會(huì)導(dǎo)致數(shù)據(jù)庫災(zāi)難性的損壞,所以做好數(shù)據(jù)庫的備份工作極為重要。備份可以創(chuàng)建在磁盤、磁帶等備份設(shè)備上,與備份對應(yīng)的是還原。
數(shù)據(jù)庫備份就是在某種介質(zhì)上(磁帶、磁盤等)存儲(chǔ)數(shù)據(jù)庫(或者其中一部分)的拷貝的過程。更嚴(yán)格意義上講,備份應(yīng)該是一種把數(shù)據(jù)從硬盤上復(fù)制到其他可移動(dòng)介質(zhì)上的操作過程。
一個(gè)完整的備份通常要包括三部分內(nèi)容,即系統(tǒng)數(shù)據(jù)庫、用戶數(shù)據(jù)庫和事務(wù)日志。
6.什么是備份設(shè)備,請談一談SQL Server中創(chuàng)建備份設(shè)備的主要步驟和方法。
參考答案:
備份設(shè)備是用來存儲(chǔ)數(shù)據(jù)庫、事務(wù)日志或文件和文件組備份的存儲(chǔ)介質(zhì)。SQL Server支持3種備份設(shè)備,即磁盤設(shè)備、磁帶設(shè)備和命名管道設(shè)備。
在SQL Server中,可以采用兩種方法創(chuàng)建備份設(shè)備,一是利用企業(yè)管理器;二是使用系統(tǒng)存儲(chǔ)過程sp_addumpdevice。其步驟如下:
在企業(yè)管理器中展開服務(wù)器組,展開指定的服務(wù)器,展開“管理”文件夾,右擊“備份”,在彈出的快捷菜單中選擇“新建備份設(shè)備”選項(xiàng),打開“備份設(shè)備屬性- 新設(shè)備”對話框。在“名稱”文本框中輸入邏輯設(shè)備的名稱,在下面選擇磁帶或者磁盤備份設(shè)備,并設(shè)置物理位置。當(dāng)使用磁盤時(shí),SQL Server允許將本地主機(jī)硬盤和遠(yuǎn)程主機(jī)上的硬盤作為備份設(shè)備,備份設(shè)備在硬盤中是以文件的方式存儲(chǔ)的。完成后,單擊“確定”按鈕即可。缺省情況下,備份設(shè)備的全路徑為“C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\進(jìn)銷存數(shù)據(jù)庫備份.BAK”,備份設(shè)備文件名為“進(jìn)銷存數(shù)據(jù)庫備份.BAK”,缺省路徑為SQL Server安裝目錄的BACKUP文件夾。
7.事務(wù)日志文件有什么用途?是否也需要備份?為什么?
參考答案:
SQL Server數(shù)據(jù)庫是由兩個(gè)操作系統(tǒng)文件組成的,即數(shù)據(jù)文件和事務(wù)日志文件。事務(wù)日志文件主要用于存儲(chǔ)數(shù)據(jù)庫的更新情況等事務(wù)日志信息。事務(wù)日志文件非常重要,所有對數(shù)據(jù)庫的更改操作都會(huì)記錄于此,當(dāng)數(shù)據(jù)庫損壞時(shí),數(shù)據(jù)庫管理員可使用事務(wù)日志恢復(fù)數(shù)據(jù)庫。
從事務(wù)日志文件的作用上可以看出,它是非常有用和重要的,因此也需要備份。
8.請按以下操作練習(xí)一下數(shù)據(jù)庫備份操作,并體會(huì)一下數(shù)據(jù)庫備份的的效果。
?。?)創(chuàng)建一個(gè)數(shù)據(jù)庫;
?。?)使用CREATE TABLE語句在數(shù)據(jù)庫中創(chuàng)建一張表;
(3)使用INSERT語句向表中插入若干條數(shù)據(jù);
(4)進(jìn)入企業(yè)管理器,對數(shù)據(jù)庫進(jìn)行備份操作;
?。?)使用DROP TABLE語句刪除已創(chuàng)建的表;
?。?)使用企業(yè)管理器,對數(shù)據(jù)庫進(jìn)行還原操作。
參考答案:
CREATE DATABASE 學(xué)生庫
學(xué)生表:
create table 學(xué)生 (
學(xué)號(hào) char (8) primary Key,
姓名 char(8),
年齡 int,
性別 bit)
insert into 學(xué)生values ('2007001','王麗','19', 1)
insert into 學(xué)生values ('2007002','張華','20', 0)
insert into 學(xué)生values ('2007003','李敏','19', 1)
1.什么是嵌入式SQL,它有哪些特點(diǎn)和用途?
參考答案:
嵌入式SQL語言是將SQL語句直接嵌入到程序的源代碼中,與其他程序設(shè)計(jì)語言語句混合。
嵌入式SQL的用途:它是數(shù)據(jù)庫應(yīng)用程序的一種開發(fā)方法。是一種應(yīng)用程序進(jìn)行數(shù)據(jù)庫訪問時(shí)所采取的編程式數(shù)據(jù)庫語言。
嵌入式SQL的特點(diǎn)是,數(shù)據(jù)庫管理系統(tǒng)DBMS一般會(huì)采用預(yù)編譯的處理辦法,即由DBMS的預(yù)處理程序?qū)υ闯绦蜻M(jìn)行掃描,識(shí)別出SQL語句,把它們轉(zhuǎn)換成宿主語言調(diào)用語句,以使宿主語言編譯程序能夠識(shí)別它,最后再由宿主語言的編譯程序?qū)⒄麄€(gè)源程序編譯成目標(biāo)碼。嵌入SQL語句完成的功能也可以通過應(yīng)用程序接口(API)實(shí)現(xiàn)。
2.請簡述C/S和B/S的主要原理,并說明它們各自的優(yōu)缺點(diǎn)。
參考答案:
C/S模式就是基于企業(yè)內(nèi)部網(wǎng)絡(luò)的應(yīng)用系統(tǒng)。傳統(tǒng)的C/S 模式是一種兩層結(jié)構(gòu)的系統(tǒng),第一層是在客戶機(jī)系統(tǒng)上結(jié)合了表示與業(yè)務(wù)邏輯;第二層是通過網(wǎng)絡(luò)結(jié)合了數(shù)據(jù)庫服務(wù)器。
優(yōu)點(diǎn)是:C/S模式的應(yīng)用系統(tǒng)最大的好處是不依賴企業(yè)外網(wǎng)環(huán)境,即無論企業(yè)是否能夠上網(wǎng),都不影響應(yīng)用。
缺點(diǎn)是應(yīng)用程序的維護(hù)、移植和互操作變得復(fù)雜。
B/S模式,即瀏覽器/服務(wù)器模式,是一種從傳統(tǒng)的二層C/S模式發(fā)展起來的新的網(wǎng)絡(luò)結(jié)構(gòu)模式,其本質(zhì)是三層結(jié)構(gòu)C/S模式。B/S網(wǎng)絡(luò)結(jié)構(gòu)模式是基于Intranet的需求而出現(xiàn)并發(fā)展的。在B/S模式中,客戶端運(yùn)行瀏覽器軟件。
優(yōu)點(diǎn)是:B/S占有優(yōu)勢的是其異地瀏覽和信息采集的靈活性。任何時(shí)間、任何地點(diǎn)、任何系統(tǒng),只要可以使用瀏覽器上網(wǎng),就可以使用B/S系統(tǒng)的終端。
缺點(diǎn)是:采用B/S結(jié)構(gòu),客戶端只能完成瀏覽、查詢、數(shù)據(jù)輸入等簡單功能,絕大部分工作由服務(wù)器承擔(dān),這使得服務(wù)器的負(fù)擔(dān)很重。
3.請簡要說明利用VB開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)的一般步驟。
參考答案:
利用VB開發(fā)數(shù)據(jù)類應(yīng)用程序的基本框架如下:
1)通常要聲明一個(gè)全局?jǐn)?shù)據(jù)庫連接對象
2)一般要?jiǎng)?chuàng)建Main子過程,并將它設(shè)置為啟動(dòng)對象。在其中順序完成以下操作:
?。?)以非模態(tài)方式顯示飛濺窗。
?。?)創(chuàng)建全局?jǐn)?shù)據(jù)庫連接對象,并連接SQL Server或Access等數(shù)據(jù)庫。
(3)以模態(tài)方式顯示登錄窗,等待用戶登錄。
?。?)登錄成功后,以非模態(tài)方式顯示主窗體,否則退出程序。
3)主窗體一般均提供增加、刪除、修改、查詢等對數(shù)據(jù)庫的管理功能,所有操作均使用全局?jǐn)?shù)據(jù)庫連接對象作為與數(shù)據(jù)庫交互的通道,通過SQL語句對數(shù)據(jù)進(jìn)行處理,其中包括增加功能、刪除功能、修改功能和查詢功能。
4)其他功能。比如數(shù)據(jù)庫備份和恢復(fù)功能、用戶權(quán)限管理功能等。
4.什么是數(shù)據(jù)庫引擎?VB數(shù)據(jù)庫應(yīng)用系統(tǒng)訪問數(shù)據(jù)庫的主要機(jī)理是什么?
參考答案:
VB提供了三種數(shù)據(jù)庫訪問引擎,即Jet引擎、ODBC和OLE DB,目前主要使用OLE DB。
在VB應(yīng)用程序中主要用這個(gè)對象建立與數(shù)據(jù)庫的連接,一般的方法是:
①聲明并創(chuàng)建對象
Dim ADOcn As New Connection
?、诮?shù)據(jù)庫連接
ADOcn.Open 連接字符串
如果要連接SQL Server數(shù)據(jù)庫,那么連接字符串一般應(yīng)具有以下組成:
Provider=SQLOLEDB;Server=<服務(wù)器名>;User ID=<登錄賬號(hào)>;Password=<登錄口令>;Database=<數(shù)據(jù)庫名>
?、蹖?shù)據(jù)表進(jìn)行更新操作
5.ADO對象模型的主要對象是什么?如果連接后臺(tái)數(shù)據(jù)庫?
參考答案:
ADO對象模型的主要對象是:Connection、Command、Recordset、Parameter、Property、Field和Error。
?、俾暶鞑?chuàng)建對象
Dim ADOcn As New Connection
②建立數(shù)據(jù)庫連接
ADOcn.Open 連接字符串
如果要連接SQL Server數(shù)據(jù)庫,那么連接字符串一般應(yīng)具有以下組成:
Provider=SQLOLEDB;Server=<服務(wù)器名>;User ID=<登錄賬號(hào)>;Password=<登錄口令>;Database=<數(shù)據(jù)庫名>
6.請寫出VB中編寫增、刪、改、查功能的主要步驟和語句。
參考答案:
ADOcn.ExecuteSQL語句字符串
要增加學(xué)生成績表中學(xué)號(hào)為20070008的記錄,可以采用以下語句實(shí)現(xiàn):
ADOcn.Execute “insert into 學(xué)生成績表 (學(xué)號(hào),課程號(hào),成績) Value(‘20070008’,’101’,’85’)”
要?jiǎng)h除學(xué)生成績表中學(xué)號(hào)為001的記錄,可以采用以下語句實(shí)現(xiàn):
ADOcn.Execute “DELETE FROM 學(xué)生成績表 WHERE 學(xué)號(hào) = ‘001’”
要修改學(xué)號(hào)為20070008學(xué)生課程號(hào)為101的成績?yōu)?9。
ADOcn.Execute “UPDATE 學(xué)生成績表 SET 成績=’89’
WHERE學(xué)號(hào) = ‘20070008’ AND 課程號(hào)=’101’”
要查找所有的學(xué)生的成績
ADOcn.Execute “SELECT * FROM 學(xué)生成績表”
請簡要說明視圖的概念和作用
參考答案:視圖是在基本表或其他視圖上建立的表,它的結(jié)構(gòu)和內(nèi)容都來自某個(gè)基本表,是依據(jù)基本表存在而存在的。刪除一個(gè)視圖時(shí),不會(huì)對基本表產(chǎn)生任何影響,但當(dāng)刪除一張基本表時(shí),與之相關(guān)聯(lián)的視圖就會(huì)自動(dòng)被刪除。其作用主要是:(1)視圖是經(jīng)過預(yù)編譯的SELECT語句,存儲(chǔ)在數(shù)據(jù)庫服務(wù)器端,因此執(zhí)行視圖比從客戶端直接執(zhí)行SELECT語句速度更快、效率更高一些。(2)視圖屬于用戶模式范疇,在實(shí)際中,一般的用戶不一定具有SELECT語句方面的專門知識(shí),從用戶友好性角度來說,視圖更便于用戶使用。(3)利用視圖可以簡化的形式表達(dá)復(fù)雜的SELECT語句組,如嵌套查詢等。
2.什么是函數(shù)依賴與函數(shù)決定,請舉例說明
參考答案:
設(shè)一個(gè)關(guān)系為R,X和Y是它的兩個(gè)屬性集。若對于X上的每個(gè)值都有Y上的一個(gè)惟一值與之對應(yīng),則稱X和Y具有函數(shù)依賴關(guān)系,并稱X函數(shù)決定Y,或稱Y函數(shù)依賴于X,稱X為決定因素。
假設(shè)一個(gè)職工關(guān)系為(職工號(hào),姓名,性別,年齡,職務(wù)),職工號(hào)用來標(biāo)識(shí)每個(gè)職工,選作該關(guān)系的主鍵。我們可以從以下兩方面理解函數(shù)依賴的概念:首先,對于該關(guān)系中每個(gè)職工的職工號(hào),都對應(yīng)著姓名屬性中的惟一值,即該職工的姓名,或者說一個(gè)職工的姓名由其職工號(hào)惟一確定,所以稱職工號(hào)函數(shù)決定姓名,或稱姓名函數(shù)依賴于職工號(hào)。其次,除職工號(hào)外,其他屬性都不能成為決定因素形成函數(shù)依賴,因?yàn)閷τ谒鼈兊拿總€(gè)屬性值,都可能對應(yīng)另一屬性的多個(gè)不同的取值,比如對于性別屬性的一個(gè)取值“男”就會(huì)對應(yīng)多個(gè)而不是一個(gè)職工號(hào)。
3.請簡要說明存儲(chǔ)過程的概念和優(yōu)點(diǎn)。
參考答案:
存儲(chǔ)過程(Stored Procedure)是一組預(yù)先編譯好的,以一種可執(zhí)行的形式永久地存儲(chǔ)在數(shù)據(jù)中的SQL代碼。
使用存儲(chǔ)過程的好處可歸納為以下幾點(diǎn):(a)執(zhí)行速度快。在經(jīng)過第一次調(diào)用以后,就駐留在內(nèi)存中,不必再經(jīng)過編譯和優(yōu)化;(b)模塊化的程序設(shè)計(jì)。經(jīng)過了一次創(chuàng)建以后,可以被調(diào)用無數(shù)次;(c)減少網(wǎng)絡(luò)流量;(d)保證系統(tǒng)的安全性。
1.請簡要說明視圖的概念和作用
參考答案及評(píng)分要點(diǎn):視圖是在基本表或其他視圖上建立的表,它的結(jié)構(gòu)和內(nèi)容都來自某個(gè)基本表,是依據(jù)基本表存在而存在的(2分)。刪除一個(gè)視圖時(shí),不會(huì)對基本表產(chǎn)生任何影響,但當(dāng)刪除一張基本表時(shí),與之相關(guān)聯(lián)的視圖就會(huì)自動(dòng)被刪除(1分)。其作用主要是:(1)視圖是經(jīng)過預(yù)編譯的SELECT語句,存儲(chǔ)在數(shù)據(jù)庫服務(wù)器端,因此執(zhí)行視圖比從客戶端直接執(zhí)行SELECT語句速度更快、效率更高一些。(2)視圖屬于用戶模式范疇,在實(shí)際中,一般的用戶不一定具有SELECT語句方面的專門知識(shí),從用戶友好性角度來說,視圖更便于用戶使用。(3)利用視圖可以簡化的形式表達(dá)復(fù)雜的SELECT語句組,如嵌套查詢等。(每答對1點(diǎn)得1分,最高2分)。
綜合應(yīng)用題
1.用SQL語句創(chuàng)建簡單數(shù)據(jù)表
設(shè)有某數(shù)據(jù)庫中有學(xué)生表(表名為Students),包括學(xué)號(hào)SNo,姓名SName,出生年月日SD等字段。SNo和SName均為字符型(長度10),SD為日期型。SNo是主鍵,請用SQL語句創(chuàng)建該數(shù)據(jù)表Students。
CREATE TABLE Students (
SNo CHAR(10) PRIMARY KEY,
SName CHAR(10),
SD DATETIME
);
2.利用SQL語句進(jìn)行查詢
在第五題第1小題的基礎(chǔ)上,假設(shè)還存在課程表(表名Courses)和成績表(表名Marks)兩張數(shù)據(jù)表。課程表Courses包括課程號(hào)CNo,課程名CName兩個(gè)字段;成績表marks包括學(xué)號(hào)SNo,課程號(hào)CNo和成績mark三個(gè)字段。
教學(xué)管理人員希望查詢學(xué)號(hào)為“2009001”的學(xué)生情況,并按如圖1所示的方式顯示查詢結(jié)果,請寫出對應(yīng)的Select查詢語句。
圖1 要求的顯示結(jié)果
SELECT students.Sno,Sname,Cname,mark
FROM students,courses,marks
WHERE students.Sno=marks.Sno and courses.Cno=marks.Cno and students.Sno=‘2009001’
3.程序應(yīng)用題
接第五題第2小題,某教學(xué)管理系統(tǒng)包括課程信息錄入功能,程序運(yùn)行界面如圖2所示,其中Text1為課程號(hào)、Text2為課程名。進(jìn)入界面后,用戶輸入所有數(shù)據(jù),點(diǎn)擊“確認(rèn)”按鈕,將結(jié)果插入到課程表courses中。請補(bǔ)充完成下列程序代碼。
圖2“增加記錄”窗體運(yùn)行界面
Private Sub Command1_Click()
‘聲明一個(gè)記錄集對象
Dim ADOrs As New Recordset
‘將記錄集對象與已建立的數(shù)據(jù)庫聯(lián)接對象ADOcn綁定
ADOrs.ActiveConnection=ADOcn
‘第一步:在課程表Courses中查詢是否存在關(guān)鍵字相同的記錄
(1)拼寫查詢字符串
strSQL =“Select CNo From courses Where Cno=‘” + Text1 + “’”
(2)執(zhí)行查詢語句
ADOrs.Open strSQL
‘第二步:如果記錄已經(jīng)存在,則退出程序
If Not ADOrs.EOF Then
MsgBox “記錄已存在,不能繼續(xù)增加”
Exit Sub
End If
‘第三步:將結(jié)果插入到課程表Courses中
strSQL = “Insert Into courses(Cno,CName) Values(‘”+Text1+“’,‘”+Text2+“’)”
ADOcn.Execute strSQL End Sub
4.用SQL語句創(chuàng)建簡單數(shù)據(jù)表
設(shè)有兩個(gè)關(guān)系(1)教師關(guān)系T,包括教師編號(hào)TNo,姓名TN,系別TD,職稱RANK;(2)課程關(guān)系C,包括課程號(hào)CNo,課程名CN。教師編號(hào)和課程號(hào)分別是上述兩個(gè)關(guān)系的主鍵,請用SQL語句創(chuàng)建教師數(shù)據(jù)表T。
參考答案
CREATE TABLE T{
TNo INT PRIMARY KEY,
TN CHAR(30),
TD CHAR(20),
RANK CHAR(20)
};
5.用SQL語句創(chuàng)建數(shù)據(jù)表
在上題基礎(chǔ)上,假設(shè)還存在教師教授課程關(guān)系TC,包括教師編號(hào)TNo和課程號(hào)CNo。
注意:說明主鍵碼和外鍵碼約束
參考答案
CREATE TABLE TC{
TNo INT,
CNo INT,
PRIMARY KEY (Tno,Cno),
FOREIGN KEY (TNo) REFERENCES T(TNo),
FOREIGN KEY (CNo) REFERENCES C(CNo)
};
6.利用SQL語句進(jìn)行查詢
在上題的基礎(chǔ)上,如果要查詢“張紅老師承擔(dān)的所有課程”,請寫出對應(yīng)的SQL查詢語句。
參考答案
SELECT C.CNo,C.CN FROM T,C,TC
WHERE T.TNo=TC.TNo AND C.CN=TC.CNo AND T.TN=‘張紅’
7.程序應(yīng)用題
設(shè)學(xué)生成績表的結(jié)構(gòu)為(學(xué)號(hào)、課程號(hào)、成績),程序運(yùn)行界面如圖1所示。進(jìn)入界面后,用戶首先選擇學(xué)號(hào)(Combo1)、課程號(hào)(Combo2),姓名(Text1)和課程名(Text2)從數(shù)據(jù)庫中自動(dòng)讀入;然后,用戶輸入對應(yīng)的成績(Text3),點(diǎn)擊“確認(rèn)”按鈕后,將結(jié)果插入到學(xué)生成績表中。請補(bǔ)充完成下列程序代碼。
Command1
Private Sub Command1_Click()
‘聲明一個(gè)記錄集對象
Dim ADOrs As New Recordset
‘將記錄集對象與已建立的數(shù)據(jù)庫聯(lián)接對象ADOcn綁定
ADOrs.ActiveConnection=ADOcn
‘第一步:在學(xué)生成績表中查詢是否存在關(guān)鍵字相同的記錄
(1)拼寫查詢字符串
strSQL=“Select * From 學(xué)生成績表 Where 學(xué)號(hào)=‘”+combo1.Text+“ ’ And 課程號(hào)=‘”+Combo2.Text+“ ’ ” (2)執(zhí)行查詢語句
ADOrs.Open StrSQL
‘第二步:如果關(guān)鍵字重復(fù),則退出程序
If Not ADOrs.EOF Then
MsgBox “記錄已存在,不能繼續(xù)增加”
Exit Sub
End If
‘第三步:將結(jié)果插入到學(xué)生成績表中
StrSQL=“Insert Into 學(xué)生成績表(學(xué)號(hào),課程號(hào)
鏈接地址:http://www.hcyjhs8.com/p-1678860.html