閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】某網上書店后臺數(shù)據庫的部分關系模式如下:
會員(會員編號,用戶名,密碼,姓名,地址,郵編,電話,消費額,積分)
圖書(圖書編號,類型名稱,圖書名稱,作者,出版社,出版日期,ISBN,價格)
訂單(訂單編號,用戶名,銷售額,訂購日期,出貨日期)
訂單明細(訂單明細編號,訂單編號,圖書編號,數(shù)量)
【問題1】(3分)
下面是創(chuàng)建訂單關系的SQL語句,訂單編號唯一識別一個訂單,用戶名為訂購圖書的會員用戶名,且不能為空。要求訂購日期不能大于出貨日期。請將空缺部分補充完整。
CREATE TABLE 訂單(
訂單編號 CHAR(6) (a),
用戶名 VARCHAR(40) NOT NULL (b)
銷售額 FLOAT ,
訂購日期 DATE NOT NULL ,
出貨日期 DATE (c)) ;
【問題2】(10分)
請完成下列查詢的SQL語句。
(1)查詢名稱中包含“數(shù)據庫”的圖書的圖書名稱,作者,出版社和出版日期。
SELECT (d)
FROM 圖書
WHERE 圖書名稱(e) ;
(2)查詢提供銷售(圖書表中有)但沒有銷售過(沒在訂單明細表中出現(xiàn))的圖書名稱和出版社。
SELECT 圖書名稱, 出版社
FROM圖書
WHERE NOT EXISTS (
SELECT (f)
FROM訂單明細
WHERE (g) ) ;
(3)查詢訂購圖書數(shù)量最多的會員名及其訂購的數(shù)量。
SELECT 用戶名, (h)
FROM訂單, 訂單明細
WHERE (i)
GROUP BY 用戶名
HAVING (j)
( SELECT SUM(數(shù)量)
FROM 訂單, 訂單明細
WHERE 訂單.訂單編號 = 訂單明細.訂單編號
GROUP BY 用戶名) ;
(4)為了統(tǒng)計會員的購買行為信息,實施有意義的客戶關懷策略,查詢會員的平均訂購間隔時間,考慮多次購買圖書和一次購買圖書的情況(其中,DATEDIFF 函數(shù)表示兩個日期之間的天數(shù))。
SELECT 用戶名, CASE WHEN(k)
THEN DATEDIFF(MAX(訂購日期), MIN(訂購日期)) / (l)
ELSE DATEDIFF (CURRENT_TIMESTAMP, MIN(訂購日期))
END AS AVG_GAP
FROM 訂單
(m) ;
【問題3】(2分)
會員訂購圖書后,將本次訂購的銷售額累加到該會員的消費額中,并按照本次訂單的銷售額計算積分累加到該會員的積分中(每20元增加1個積分,不足20元不計入積分)。下面用觸發(fā)器實現(xiàn)該需求,請?zhí)畛淇杖辈糠帧?br />CREATE TRIGGER 會員積分_TRIGGER AFTER (n)
REFERENCING NEW ROW AS NROW
BEGIN
UPDATE 會員
SET 消費額 = 消費額 + NROW.銷售額, (o)
WHERE 用戶名 = NROW.用戶名
END