閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
天津市某銀行信息系統(tǒng)的數(shù)據(jù)庫部分關(guān)系模式如下所示:
客戶(客戶號,姓名,性別,地址,郵編,電話)
賬戶(賬戶號,客戶號,開戶支行號,余額)
支行(支行號,支行名稱,城市,資產(chǎn)總額)
交易(交易號,賬戶號,業(yè)務(wù)金額,交易日期)
其中,業(yè)務(wù)金額為正值表示客戶向賬戶存款;為負(fù)值表示取款。
【問題1】
以下是創(chuàng)建賬戶關(guān)系的SQL語句,賬戶號唯一識別一個賬戶,客戶號為客戶關(guān)系的唯一標(biāo)識,且不能為空。賬戶余額不能小于1.00元。請將空缺部分補(bǔ)充完整。
CREATE TABLE 賬戶(
賬戶號 CHAR(19) (a) ,
客戶號 CHAR(10) (b) ,
開戶支行號 CHAR(6) NOT NULL ,
余額 NUMBER(8,2) (c) );
【問題2】
(1)現(xiàn)銀行決策者希望查看在天津市各支行開戶且2009年9月使用了銀行存取服務(wù)的所有客戶的詳細(xì)信息,請補(bǔ)充完整相應(yīng)的查詢語句。 (交易日期形式為’2000-01-01’)
SELECT DISTINCT 客戶.*
FROM 客戶, 賬戶, 支行, 交易
WHERE 客戶.客戶號 = 賬戶.客戶號 AND
賬戶.開戶支行號 = 支行.支行號 AND
(d) AND
交易.賬戶號 = 賬戶.賬戶號 AND
(e) ;
上述查詢優(yōu)化后的語句如下,請補(bǔ)充完整。
SELECT DISTINCT 客戶.*
FROM 客戶, 賬戶, (f) AS 新支行, (g) AS 新交易
WHERE 客戶.客戶號 = 賬戶.客戶號 AND
賬戶.開戶支行號 = 新支行.支行號 AND
新交易.賬戶號 = 賬戶.賬戶號
(2)假定一名客戶可以申請多個賬戶,給出在該銀行當(dāng)前所有賬戶余額之和超過百萬的客戶信息并按客戶號降序排列。
SELECT *
FROM 客戶
WHERE (h)
(SELECT 客戶號 FROM 賬戶 GROUP BY 客戶號 (i) )
ORDER BY (j) ;
【問題3】
(1)為賬戶關(guān)系增加一個屬性“賬戶標(biāo)記” ,缺省值為0,取值類型為整數(shù);并將當(dāng)前賬戶關(guān)系中所有記錄的“賬戶標(biāo)記”屬性值修改為0。請補(bǔ)充相關(guān)SQL語句。
ALTER TABLE 賬戶 (k) DEFAULT 0 ;
UPDATE 賬戶 (l) ;
(2)對于每筆金額超過10萬元的交易,其對應(yīng)賬戶標(biāo)記屬性值加1,給出觸發(fā)器實(shí)現(xiàn)的方案。
CREATE TRIGGER 交易_觸發(fā)器 (m) ON 交易
REFERENCING NEW ROW AS 新交易
FOR EACH ROW
WHEN (n)
BEGIN ATOMIC
UPDATE 賬戶 SET 賬戶標(biāo)記 = 賬戶標(biāo)記 + 1
WHERE (o) ;
COMMIT WORK ;
END ;