【简答题】
试题二(15分)
阅读下列说明,回答问题1至问题5,将解答填入答题纸的对应栏内。
【说明】
某企业网上销售管理系统的数据库部分关系模式如下所示:
客户(客户号,姓名,性别,地址,邮编)
产品(产品号,名称,库存,单价)
订单(订单号,时间,金额,客户号)
订单明细(订单号,产品号,数量)
关系模式的主要属性及约束如表2-1所示。
客户、产品、订单和订单明细关系及部分数据分别如表2-2、2-3、2-4、2-5所示。
【问题1】 以下是创建部分关系表的SQL语句,请将空缺部分补充完整。(3分)
CREATE TABLE客户(
客户号 CHAR(5) ____(a)____ ,
姓名 CHAR(30),
性别 CHAR(2) ____(b)____ ,
地址 CHAR(30),
邮编 CHAR(6));
CREATE TABLE 订单(
订单号 CHAR (4),
时间 CHAR (10),
金额 NUMBER(6,2),
客户号 CHAR(5) NOT NULL,
PRIMARY KEY (订单号),
____(c)_____);
【问题2】 请根据如下查询语句,回答问题(d),(e)和(f)(4分)
SELECT客户号
FROM订单, 订单明细
WHERE 订单明细.订单号 = 订单.订单号 AND
产品号 = ’02’ AND
数量 > 10;
(d) 上述查询语句的功能是什么?请简要回答。(30个字以内)
(e) 将上述查询语句转换成对应的关系代数表达式。
(f) 上述SQL查询语句是否可以进一步优化?如可以,给出优化后的SQL查询语句。
【问题3】请按题意将下述SQL查询语句的空缺部分补充完整。(3分)
按客户购买总额的降序,输出每个客户的客户名和购买总额。
SELECT 客户.客户名, _____(g)_____
FROM 客户, 订单
WHERE 客户.客户号 = 订单.客户号
_____(h)_____
_____(i)_____ ;
【问题4】用SQL语句完成下述要求。(3分)
(1)定义一个描述订单的客户号和对应订单明细中产品号关系的视图:客户产品(客户号,产品号)。
(2)借助(1)所定义的视图,查询至少购买了01号客户购买的所有产品的客户号。
SELECT 客户号
FROM 客户产品 客户产品1
WHERE _____(j)_____
(SELECT *
FROM客户产品 客户产品2
WHERE _____(k)_____
(SELECT *
FROM客户产品 客户产品3
WHERE _____(l)_____ ));
【问题5】当一个订单和对应的订单明细数据入库时,应该减少产品关系中相应的产品库存,为此应该利用数据库管理系统的什么机制实现此功能?请用100字以内的文字简要说明。(2分)