閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
某航空公司要開發(fā)一個訂票信息處理系統(tǒng),該系統(tǒng)的部分關(guān)系模式如下:
航班(航班編號,航空公司,起飛地,起飛時間,目的地,到達(dá)時間,票價)
折扣(航班編號,開始日期,結(jié)束曰期,折扣)
旅客(身份證號,姓名,性別,出生日期,電話,VIP折扣)
購票(購票單號,身份證號,航班編號,搭乘日期,購票金額)
有關(guān)關(guān)系模式的屬性及相關(guān)說明如下:
(1) 航班表中的起飛時間和到達(dá)時間不包含日期,同一航班不會在一天出現(xiàn)兩次及 兩次以上;
(2) 各航空公司會根據(jù)旅客出行淡旺季適時調(diào)整機(jī)票的折扣,旅客購買機(jī)票的購票金額計算公式為:票價X折扣X VIP折扣,其中旅客的VIP折扣與該旅客已購買過的機(jī)票的購票金額總和相關(guān),在旅客每次購票后被修改。VIP折扣值的計算由函數(shù)float vip_value(char[18] 身份證號)完成。
【問題1】
請將如下創(chuàng)建購票關(guān)系的SQL語句的空缺部分補(bǔ)充完整, 要求指定關(guān)系的主鍵、外鍵,以及購票金額大于零的約束。
CREATE TABLE 購票(
購票單號 CHAR()(a),
身份證號CHAR(),
航班編號CHAR (),
搭乘日期DATE,
購票金額FLOAT(b),
(c),
(d),
);
【問題2】
(1)身份證號為210000196006189999的客戶購買了 2013年2月18 日 CA5302航班的機(jī)票,購票單號由系統(tǒng)自動生成。下面的SQL語句將上述購票信息加入系統(tǒng)中,請將空缺部分補(bǔ)充完整。
INSERT INTO 購票(購票單號,身份證號,航班編號,搭乘日期,購票金額)
SELECT ‘201303105555’,‘210000196006189999’,‘CA5302’,‘2013/2/18’,(e)
FROM 航班,折扣,旅客
WHERE(f) AND 航班.航班編號=‘CA5302’ AND
AND ‘2013/2/18’ BETWEEN 折扣.開始日期 AND 折扣.結(jié)束日期
AND 旅客.身份證號=‘210000196006189999’;
(2)需要用觸發(fā)器來實(shí)現(xiàn)VIP折扣的修改,調(diào)用函數(shù)vip_value()來實(shí)現(xiàn)。請將如下SQL語句的空缺部分補(bǔ)充完整。
CREATE TRIGGER VIP_TRG AFTER(g)ON(h)
REFERENCING new row AS nrow
FOR EACH row
BEGIN
UPDATE 旅客
SET(i)
WHERE(j);
END
【問題3】
請將如下SQL語句的空缺部分補(bǔ)充完整。
(1)查詢搭乘日期在2012年1月1日至2012年12月31日之間,且合計購票金額大于等于10000元的所有旅客的身份證號、姓名和購票金額總和,并按購票金額總和降序輸出。
SELECT 旅客.身份證號,姓名,SUM(購票金額)
FROM旅客,購票
WHERE(k)
GROUP BY(l)
ORDER BY(m);
(2)經(jīng)過中轉(zhuǎn)的航班與相同始發(fā)地和目的地的直達(dá)航班相比,會享受更低的折扣。查詢從廣州到北京,經(jīng)過一次中轉(zhuǎn)的所有航班對,輸出廣州到中轉(zhuǎn)地的航班編號、中轉(zhuǎn)地和中轉(zhuǎn)地到北京的航班編號。
SELECT (n)
FROM 航班 航班1,航班 航班2
WHERE(o);