题库 题库

【简答题】

试题二(共15分)
    阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】某网上书店后台数据库的部分关系模式如下:
    会员(会员编号,用户名,密码,姓名,地址,邮编,电话,消费额,积分)
    图书(图书编号,类型名称,图书名称,作者,出版社,出版日期,ISBN,价格)
    订单(订单编号,用户名,销售额,订购日期,出货日期)
    订单明细(订单明细编号,订单编号,图书编号,数量)
【问题1】(3分)
    下面是创建订单关系的SQL语句,订单编号唯一识别一个订单,用户名为订购图书的会员用户名,且不能为空。要求订购日期不能大于出货日期。请将空缺部分补充完整。
    CREATE TABLE 订单(
        订单编号 CHAR(6)    _____(a)_____ ,
        用户名 VARCHAR(40) NOT NULL  _____(b)_____ ,
        销售额 FLOAT ,
        订购日期 DATE NOT NULL ,
        出货日期 DATE  _____(c)_____  ) ;
【问题2】(10分)
    请完成下列查询的SQL语句。
    (1)查询名称中包含“数据库”的图书的图书名称,作者,出版社和出版日期。
        SELECT    _____(d)_____
        FROM 图书
        WHERE 图书名称  _____(e)_____ ;
    (2)查询提供销售(图书表中有)但没有销售过(没在订单明细表中出现)的图书名称和出版社。
        SELECT图书名称, 出版社
        FROM图书
        WHERE NOT EXISTS (
            SELECT _____(f)_____
            FROM订单明细
            WHERE _____(g)_____) ;
    (3)查询订购图书数量最多的会员名及其订购的数量。
        SELECT用户名,  _____(h)_____
        FROM订单, 订单明细
        WHERE  _____(i)_____
        GROUP BY 用户名
            HAVING  _____(j)_____
                ( SELECT SUM(数量)
                FROM 订单, 订单明细
                WHERE 订单.订单编号 = 订单明细.订单编号
                GROUP BY 用户名) ;
  (4)为了统计会员的购买行为信息,实施有意义的客户关怀策略,查询会员的平均订购间隔时间,考虑多次购买图书和一次购买图书的情况(其中,DATEDIFF函数表示两个日期之间的天数)。
    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元不计入积分)。下面用触发器实现该需求,请填充空缺部分。
    CREATE TRIGGER 会员积分_TRIGGER  AFTER  _____(n)_____
    REFERENCING NEW ROW AS NROW
    BEGIN
        UPDATE 会员
        SET 消费额 = 消费额 + NROW.销售额,    _____(o)_____
        WHERE 用户名 = NROW.用户名
    END

参考答案

相关试题