2015計(jì)算機(jī)三級(jí)《數(shù)據(jù)庫(kù)技術(shù)》練習(xí)題和答案
A.在一個(gè)數(shù)據(jù)庫(kù)中可以定義多個(gè)內(nèi)模式,可利用不同的內(nèi)模式來(lái)描述特定用戶對(duì)數(shù)據(jù)的物理存儲(chǔ)需求
B.外模式是用戶與數(shù)據(jù)庫(kù)系統(tǒng)的接口,用戶可通過(guò)外模式來(lái)訪問(wèn)數(shù)據(jù),在一個(gè)數(shù)據(jù)庫(kù)中只能定義一個(gè)外模式
C.三級(jí)模式結(jié)構(gòu)提供了數(shù)據(jù)獨(dú)立性,即當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)發(fā)生變化時(shí),應(yīng)用程序不受影響
D.數(shù)據(jù)獨(dú)立性使得數(shù)據(jù)的定義和描述與應(yīng)用程序相分離,簡(jiǎn)化了數(shù)據(jù)庫(kù)應(yīng)用程序的開(kāi)發(fā),但增加了用戶維護(hù)數(shù)據(jù)的代價(jià)
參考答案:C
參考解析:A選項(xiàng)中內(nèi)模式也稱存儲(chǔ)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲(chǔ)方式的描述,是數(shù)據(jù)在數(shù)據(jù)庫(kù)內(nèi)部的表示方式,一個(gè)數(shù)據(jù)庫(kù)只有一個(gè)內(nèi)模式。B選項(xiàng)中外模式可以有多個(gè),其是應(yīng)用程序或用戶與數(shù)據(jù)庫(kù)通信的接口,不同的用戶訪問(wèn)同一個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)多個(gè)外模式。D選項(xiàng)中數(shù)據(jù)與程序之間的獨(dú)立性,使數(shù)據(jù)定義與描述分離,所有數(shù)據(jù)的存取由DBMS管理,用戶不必考慮存取細(xì)節(jié),所以減少了應(yīng)用程序的維護(hù)。
3[單選題] 在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)生命周期中,系統(tǒng)設(shè)計(jì)完成后就進(jìn)入到系統(tǒng)實(shí)現(xiàn)與部署階段。下列關(guān)于數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)實(shí)現(xiàn)與部署階段工作的說(shuō)法,錯(cuò)誤的是( )。
A.此階段會(huì)根據(jù)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)和物理結(jié)構(gòu)設(shè)計(jì)方案以及項(xiàng)目選擇的數(shù)據(jù)庫(kù)管理系統(tǒng),編寫相關(guān)腳本生成數(shù)據(jù)庫(kù)結(jié)構(gòu)
B.此階段會(huì)將用戶原有數(shù)據(jù)按照新的數(shù)據(jù)結(jié)構(gòu)導(dǎo)人到新系統(tǒng)中
C.此階段會(huì)進(jìn)行應(yīng)用系統(tǒng)編碼和編碼測(cè)試,編碼測(cè)試可以使用白盒測(cè)試方法也可以使用黑盒測(cè)試方法
D.此階段如果發(fā)現(xiàn)系統(tǒng)的功能、性能不滿足用戶需求,應(yīng)盡快進(jìn)行系統(tǒng)升級(jí)工作
參考答案:D
參考解析:系統(tǒng)的實(shí)現(xiàn)階段主要是系統(tǒng)編碼和測(cè)試,針對(duì)系統(tǒng)的功能和性能不足對(duì)系統(tǒng)進(jìn)行升級(jí)是運(yùn)行維護(hù)階段的工作。
4[單選題] 關(guān)于并行數(shù)據(jù)庫(kù),下列說(shuō)法錯(cuò)誤的是( )。
A.層次結(jié)構(gòu)可以分為兩層,頂層是無(wú)共享結(jié)構(gòu),底層是共享內(nèi)存或共享磁盤結(jié)構(gòu)
B.無(wú)共享結(jié)構(gòu)通過(guò)最小化共享資源來(lái)降低資源競(jìng)爭(zhēng),因此具有很高的可擴(kuò)展性,適合于OLTP應(yīng)用
C.并行數(shù)據(jù)庫(kù)系統(tǒng)經(jīng)常通過(guò)負(fù)載均衡的方法來(lái)提高數(shù)據(jù)庫(kù)系統(tǒng)的業(yè)務(wù)吞吐率
D.并行數(shù)據(jù)庫(kù)系統(tǒng)的主要目的是實(shí)現(xiàn)場(chǎng)地自治和數(shù)據(jù)全局透明共享
參考答案:D
參考解析:并行數(shù)據(jù)庫(kù)系統(tǒng)的主要目的是通過(guò)高速通信介質(zhì)連接多個(gè)可獨(dú)立處理的單元以并行執(zhí)行的方式完成對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的互聯(lián)查詢、內(nèi)部查詢及各種內(nèi)部操作。分布式數(shù)據(jù)庫(kù)系統(tǒng)的主要目的才是實(shí)現(xiàn)場(chǎng)地自治和數(shù)據(jù)全局透明共享。
5[單選題]設(shè)在SQLServer 2008某數(shù)據(jù)庫(kù)中建有如下會(huì)員卡表:
CREATE TABLE Table_Card(
CardID char(4)PRJMARY KEY,
StartDate datetime NOT NULL,
Score int NOT NULL DEFAULT 0,
State int NOT NULL CHECK(State in(0,1,2))
)
現(xiàn)表中無(wú)數(shù)據(jù),某用戶對(duì)此表依次進(jìn)行了如下操作:
Ⅰ.INSERT INTO Table_Card
VALUES(ˊ1001ˊ,ˊ2012-1-1 12:30:01ˊ,154,0)
Ⅱ.INSERT INTOTable_Card(CardID,StartDate,State)
VALUES(ˊ1002ˊ, ˊ2012-1-1 12:30:02ˊ,1)
Ⅲ.INSERTINTO Table_Card
VALUES(ˊ1003 ˊ,ˊ2012-1-1 12:30:03ˊ,172,2)
IV.INSERT INTO Table_Card
VALUES(ˊ1004 ˊ,ˊ2012-1-1 12:30:04ˊ,135,3)
Ⅴ.UPDATE Table Card SETState=3 WHERE CardID=ˊ1001ˊ
Ⅵ.UPDATE Table Card SETState=1 WHERE CardID=ˊ1004ˊ
以上操作對(duì)Table_Card表數(shù)據(jù)產(chǎn)生影響的是( )。
A.僅Ⅰ、Ⅱ和ⅢB.僅Ⅰ、Ⅴ和ⅥC.僅Ⅰ、Ⅱ、Ⅲ和ⅥD.僅Ⅲ、Ⅳ、Ⅴ和Ⅵ
參考答案:A
參考解析:Ⅳ中插人字段的第四個(gè)字段“3”不滿足“CHECK(State in(0,1,2))”的條件,因此插入不成功。V中更新第四個(gè)字段“State=3”同樣不滿足“CHECK(State in(0,1,2))”的條件,更新失敗。Ⅵ中
因?yàn)闆](méi)有“CardlD=ˊ1004ˊ”的記錄,所以更新失敗。
6[單選題] 數(shù)據(jù)庫(kù)鏡像有很多優(yōu)點(diǎn),但不包括( )。
A.數(shù)據(jù)庫(kù)鏡像提供完整或接近完整的數(shù)據(jù)冗余,增強(qiáng)數(shù)據(jù)保護(hù)功能
B.發(fā)生災(zāi)難時(shí),數(shù)據(jù)庫(kù)鏡像可快速使數(shù)據(jù)庫(kù)的備用副本提供服務(wù)
C.數(shù)據(jù)庫(kù)鏡像可以降低應(yīng)用成本
D.提高生產(chǎn)數(shù)據(jù)庫(kù)在升級(jí)期間的可用性
參考答案:C
參考解析:數(shù)據(jù)庫(kù)鏡像是一種簡(jiǎn)單的策,具有下列優(yōu)點(diǎn):①增強(qiáng)數(shù)據(jù)保護(hù)功能。數(shù)據(jù)庫(kù)鏡像提供完整或接近完整的數(shù)據(jù)冗余,具體取決于運(yùn)行模式是高安全性模式還是高性能模式;②提高數(shù)據(jù)庫(kù)的可用性。發(fā)生災(zāi)難時(shí),在具有自動(dòng)故障轉(zhuǎn)移功能的高安全性模式下,自動(dòng)故障轉(zhuǎn)移可快速使數(shù)據(jù)庫(kù)的備用副本在線(而不會(huì)丟失數(shù)據(jù))。在其他運(yùn)行模式下,數(shù)據(jù)庫(kù)管理員可以選擇強(qiáng)制服務(wù)(可能丟失數(shù)據(jù)),以替代數(shù)據(jù)庫(kù)的備用副本;③提高生產(chǎn)數(shù)據(jù)庫(kù)在升級(jí)期間的可用性。因?yàn)閿?shù)據(jù)庫(kù)鏡像技術(shù)需要額外存放數(shù)據(jù)的空間,所以會(huì)增加應(yīng)用成本。
7[填空題] 設(shè)在SQL Server 2008某數(shù)據(jù)庫(kù)中有按如下格式定義的存儲(chǔ)過(guò)程首部:
CREATE PROC Pl@X int,@Y int,@Z int output AS…
請(qǐng)補(bǔ)全下列調(diào)用該存儲(chǔ)過(guò)程的語(yǔ)句。
DECLARE@S int
EXEC Pl 20,30,@S【7】
參考解析:
output
【解析】存儲(chǔ)過(guò)程是SQL語(yǔ)句和可選控制流語(yǔ)句的預(yù)編譯集合,它用一個(gè)名字存儲(chǔ)一個(gè)處理單元。創(chuàng)建存儲(chǔ)過(guò)程為:
CREATE Procedure過(guò)程名([參數(shù)1,參數(shù)2,…])
AS;
默認(rèn)的參數(shù)全為輸入?yún)?shù),如果包含輸出參數(shù),在相應(yīng)的參數(shù)后面加0utput標(biāo)識(shí)。如:
CREATE Procedure過(guò)程名([參數(shù)1,參數(shù)2 0utput,…])
AS;
執(zhí)行存儲(chǔ)過(guò)程時(shí)則調(diào)用EXEC存儲(chǔ)過(guò)程名參數(shù)名1,參數(shù)名2 0utput,執(zhí)行存儲(chǔ)過(guò)程的參數(shù)與CREATE時(shí)的參數(shù)對(duì)應(yīng)。
8[填空題] 設(shè)某數(shù)據(jù)庫(kù)中作者表(作者號(hào)、城市)和出版商表(出版商號(hào),城市)。請(qǐng)補(bǔ)全如下查詢語(yǔ)句,使該查詢語(yǔ)句能查詢出在作者表里而不在出版商表中的城市。
SELECT城市FROM作者表作者
【9】
(SELECT城市FROM出版商表)
參考解析:
WHERE作者.城市NOT IN要查詢有作者但是沒(méi)有出版社的結(jié)果集,可以采用子查詢手段,即從作者表中查詢城市,且城市不在出版社所在的城市。這時(shí)我們可以用NOT IN來(lái)實(shí)現(xiàn),NOT IN的結(jié)果集是在外查詢中存在,但是在內(nèi)查詢中不存在的記錄。
9[填空題] 數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)故障是不可避免的。當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)出現(xiàn)事務(wù)故障和系統(tǒng)故障時(shí)需使用數(shù)據(jù)庫(kù)的【12】文件進(jìn)行恢復(fù)。
參考解析:日志
【解析】數(shù)據(jù)庫(kù)出現(xiàn)事務(wù)故障和系統(tǒng)故障時(shí),需要使用數(shù)據(jù)庫(kù)的日志文件進(jìn)行恢復(fù)。
10[簡(jiǎn)答題] 設(shè)在SQL Server 2008某數(shù)據(jù)庫(kù)中有商品表和銷售表,兩個(gè)表的定義如下:
CREATE TABLE商品表(
商品號(hào)char(10)PRIMARY KEY,
商品名varchar(40),
類別varchar(20),
進(jìn)貨單價(jià)int)
CREATE TABLE銷售表(
商品號(hào)char(10),
銷售時(shí)間datetime,
銷售數(shù)量int,
銷售單價(jià)int,
PRIMARY KEY(商品號(hào),銷售時(shí)問(wèn)))
下面是一個(gè)用戶定義的多語(yǔ)句表值函數(shù),它接受類別作為輸入?yún)?shù),返回該類別下的每種商品在2012年的銷售總利潤(rùn),并將結(jié)果按照銷售總利潤(rùn)的降序輸出。請(qǐng)補(bǔ)全該函數(shù)定義代碼。(10分)
CREATE FUNCTION f_Profit(@lb char(10))【1】@ProfitTable【2】(商品號(hào)char(10),總利潤(rùn)int)
AS
BEGIN
INSERT INTO@ProfitTable
【3】
【4】
END
參考解析:
【解題思路】
用戶定義的多語(yǔ)句表值函數(shù)的命令格式為:
CREATE FUNCTION[schema_name.]function name
([{@parameter_name[AS][type_schema_name.]parameter_data_type
[=default]}
[….n]
]
)
RETURNS@return_variable TABLE
[WITH[[,]…n]]
[AS]
BEGIN
function_body
RETURN
END
[;]
::=
({
J}
[][,…n]
)
題目要求返回指定類別下的每種商品在2012年的銷售總利潤(rùn),并且將結(jié)果按照銷售總利潤(rùn)的降序輸出。采用復(fù)合SQL語(yǔ)句的格式,先查出指定類別的所有商品號(hào):SELECT商品號(hào)FROM商品表WHERE類別=@lb,其中@lb為函數(shù)的傳人參數(shù),然后在銷售表中用GROUP BY對(duì)商品號(hào)進(jìn)行分組,并采用SUM計(jì)算每個(gè)分組的總和。
【參考答案】
第一空:RETURNS
第一空:table
第三空:SELECT a.商品號(hào),SUM(銷售數(shù)量*(銷售單價(jià)一進(jìn)貨單價(jià)))AS總利潤(rùn)FROM銷售表a JOIN商品表b ON a.商品號(hào)=b.商品號(hào)WHERE a.商品號(hào)IN(SELECT商品號(hào)FROM商品表WHERE類別=@lb)GROUP BY a.商品號(hào)0RDER BY總利潤(rùn)DESC
第四空:RETURN@ProfitTable