用看的、听的学真题

study by eyes and ears.

  1. 首页
  2. 数据库系统工程师
  3. 2009年05月数据库系统工程师考试下午真题【应用技术】
  4. 真题详解

2009年05月数据库系统工程师考试下午真题【应用技术】(第2题) 收藏

【2】  阅读下列说明,回答问题1至问题3,将解答填入的对应栏内。
【说明】
  某网上书店后台数据库的部分关系模式如下:
  会员(会员编号,用户名,密码,姓名;地址,邮编,电话,消费额,积分)
  图书(图书编号,类型名称,图书名称,作者,出版社,出版日期,ISBN,价格)
  订单(订单编号,用户名,销售额,订购日期,出货日期)
  订单明细(订单明细编号,订单编号,图书编号,数量)

问题1 (3.0分)

  下面是创建订单关系的SQL语句,订单编号唯一识别一个订单,用户名为订购图书的会员用户名,且不能为空。要求订购日期不能大于出货日期。请将空缺部分补充完整。
  CREATE TABLE 订单(
  订单编号  CHAR(6)   (a)
  用户名 VARCHAR(40) NOT NULL (b)
  销售额 FLOAT,
  订购日期 DATE NOT NULL,
  出货日期 DATE (c));
暂无

问题2 (10.0分)

  请完成下列查询的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.0分)

  会员订购图书后,将本次订购的销售额累加到该会员的消费额中,并按照本次订单的销售额计算积分累加到该会员的积分中(每20元增加1个积分,不足20元不计入积分)。下面用触发器实现该需求,请填充空缺部分。
  CREATE TRIGGER 会员积分_TRIGGER AFTER(n)
  REFERENCING NEW ROW AS NROW
  BEGIN
  UPDATE 会员
  SET 消费额=消费额+NROW.销售额,(o)
  WHERE 用户名=NROW.用户名
  END
暂无
广告位