摘要:2011上半年數據庫系統工程師考試真題及答案解析下午卷 試題二 閱讀下列說明,回答問題1至問題3,將解答填入對應欄內。
下午卷
試題二
閱讀下列說明,回答問題1至問題3,將解答填入對應欄內。
[說明]
某法院要開發一個訴訟案件信息處理系統,該信息系統的部分關系模式如下:
職工(職工編號,姓名,崗位)律師(律師編號,姓名)
被告(被告編號,姓名,地址)
案件(案件編號,案件類型,案件描述,被告,律師,主審法官,立案日期,狀態,結案日期,結案摘要)
審理(審理編號,案件編號,審理日期,摘要)有關關系模式的屬性及相關說明如下:
(1)職工關系模式的崗位有“法官”、“書記員”和“其他”。
(2)訴訟立案后,即在案件關系中插入一條相應記錄。案件關系模式的狀態有“待處理”、“審理中”、“結案”和“撤銷”,一個案件開始立案時其案件狀態為“待處理”。
(3)案件關系模式的案件類型有“偷竊”、“縱火”等。
(4)一個案件自立案到結案的整個過程由一位法官和一位律師負責,一個案件通常經過一次到多次審理。
假設案件編號標識一個案件,且立案日期小于等于結案日期。請將如下創建案件關系的SQL語句的空缺部分補充完整。
CREATETABLE案件(
案件編號CHAR5(a),
案件類型VARCHAR6,
案件描述VARCHAR7,
立案日期DATE,
被告VARCHAR5REFERENCES被告(被告編號),
律師VARCHAR5REFERENCES律師(律師編號),
主審法官VARCHAR5(b),
狀態VARCHAR5(c)DEFAULT'待處理',
結案日期DATE,
結案摘要VARCHAR7,
d.
};
請完成下列查詢的SQL語句。
9、查詢當前待處理的訴訟案件,顯示案件的案件編號、立案日期、被告姓名、被告地址、案件描述、律師姓名和主審法官姓名。
SELECT案件編號,立案日期,被告.姓名,AS被告姓名,地址AS被告地址,案件描述,律師.姓名AS律師姓名,(e)
FROM(f)
WHERE案件.被告=被告.被告編號AND案件.律師=律師.律師編號AND
(g);
10、查詢2009年立案的各類案件數,并按案件數降序排序。(日期格式舉例:2009年1月1日表示為01-JAN-2009,2009年12月31日表示為31-DEC-2009)
SELECT類型,
count(*)AS案件數
FROM案件
WHERE(h)d
GROUPBY類型
(i);
11、查詢立案次數超過5次的被告姓名和地址。
SELECT姓名,地址,count(*)
FROM案件,被告
WHERE(j)d
GROUPBY(k)d
(l);
當插入一個審理記錄時,檢查案件的狀態,若狀態為“未處理”,則將其修改為“審理中”。下面是用觸發器實現該需求的SQL語句,請將空缺部分補充完整。
CREATETRIGGER審理TRIGGERAFTER(m)ON審理
REFERENCINGnewrowASnrow
FOREACHrow
WHEN'未處理'=(SELECT狀態
FROM案件
WHERE案件編號=nrow.案件編號)
BEGIN
UPDATE案件(n)d
WHERE(o);
END
參考答案及解析
5、PRIMARYKEY或NOTNULLUNIQUE
6、REFERENCES職工(職工編號)
7、CHECKVALUESIN('待處理','審理中','結案','撤銷')
8、CHECK(立案日期<=結案日期)
本題考查SQL語言,是比較傳統的題目,要求考生細心分析題目中所描述的內容。
本問題考查SQL中的數據定義語言DDL和完整性約束。完整性約束包括三類:實體完整性、參照完整性和用戶定義的完整性。實體完整性約束規定關系的主屬性不能取空值,關系模型中以主碼作為性標識;參照完整性約束規定若屬性(或屬性組)A是關系R上的主碼,B是關系S上的外碼,A與B相對應(來自相同的域),則B取值為空或者來自于R上的某個A的值;用戶定義的完整性約束是針對具體的數據庫應用而定義的,它反映該應用所涉及的數據必須滿足用戶定義的語義要求。
(a)考查實體完整性約束,案件編號是案件關系模式的主碼,用關鍵字PRIMARYKEY或者NOTNULLUNIOUE表示。
(b)考查參照完整性約束,主審法官屬性參照職工關系模式中的職工編號屬性,由于這兩個屬性名稱不同,因此用REFERENCES職工(職工編號)表示,此處不能省略職工編號。
(c)、(d)考查用戶定義的完整性約束。(c)是在狀態屬性上定義列級約束,用CHECKVALUESIN('待處理','審理中','結案','撤銷')表示。(d)在立案日期和結案日期上定義約束,用CHECK(立案日期<=結案日期)表示。
9、姓名AS主審法官姓名
10、案件,被告,律師,職工(關系模式的順序無關)
11、主審法官=職工.職工編號
12、立案日期BETWEEN'01-JAN-2009'AND'31-DEC-2009'或者立案日期>='01-JAN-2009'AND立案日期<='31-DEC-2009'
13、ORDERBY案件數DESC
14、被告=被告.被告編號
15、姓名,地址
16、HAVINGcount(*)>5
本問題考查SQL中的數據操作語言DML。
(1)考查別名和連接查詢條件。(e)處考核別名定義,用AS關鍵字,且別名根據題干給出,應填“職工.姓名AS主審法官姓名”;(f)處考查該查詢涉及到的關系模式,此處應涉及到案件、被告、律師和職工4個關系模式,在FROM子句中關系模式是順序無關的;(g)處考核案件關系模式和職工關系模式的連接條件,即“案件.主審法官=職工.職工編號”。
(2)考查日期屬性并對查詢結果進行分組和排序。(h)處主要考核日期作為條件屬性的語法,題干中已經給出日期格式的提示。在兩個日期之間的時間的語法可以用BETWEEN…AND…,也可以用>…<=,因此,此處可以填“立案日期BETWEEN'01-JAN-2009'AND'31-DEC-2009'"或者“立案日期>='01-JAN-2009'AND立案日期<='31-DEC.2009'";(i)處考核查詢結果的排序,用“ORDERBY案件數DESC”表示,其中的DESC關鍵字不能省略。在ORDERBY子句中,若不用表示升序的關鍵字ASC或表示降序的關鍵字DESC表示,則默認為升序排序。
(3)考查對查詢結果進行分組,并指定滿足條件的分組才能輸出。(i)處考核兩個關系模式的連接關系,應填“案件.被告=被告.被告編號”;(k)處考核分組,此處填“姓名,地址”,不能僅填姓名或者地址;(1)處考核分組條件,用HAVING關鍵字,應填“HAVINGcount(*)>5”。17、INSERT18、SET狀態='審理中'19、案件編號=nrow案件編號本問題考查觸發器。
觸發器是一個能由系統自動執行對數據庫修改的語句。一個觸發器由事件、條件和動態三部分組成:事件即對數據庫的插入、刪除和修改等操作。觸發器在這些事件發生時,將開始工作;條件是指觸發器將測試條件是否成立,若成立就執行相應的動作,否則就什么也不做;動態是指若觸發器測試滿足預定的條件,那么就由數據庫管理系統執行這些動作。本題首先定義觸發器的事件,即對審理
相關鏈接:
數據庫系統工程師考試知識點分析與真題詳解(第4版)
數據庫系統工程師考試歷年試題分析與解答(第4版)
數據庫系統工程師考試下午知識點精講與考前必練
數據庫系統工程師考試考前串講
軟考備考資料免費領取
去領取
專注在線職業教育24年