以下是创建部分关系表的SQL语句,请将空缺部分补充完整。 CREATE TABLE客户( 客户号CHAR(5) (a) 姓名CHAR(30), 性别CHAR(2) (b) 地址CHAR(30), 邮编CHAR(6)

admin2009-05-15  45

问题 以下是创建部分关系表的SQL语句,请将空缺部分补充完整。
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) NOTNULL,
   PRTMARYKEY(订单号),
     (c));
用SQL语句完成下述要求。
   (1)定义一个描述订单的客户号和对应订单明细中产品号关系的视图:客户产品(客户号,产品号)。
   (2)借助(1)所定义的视图,查询至少购买了01号客户购买的所有产品的客户号。
   SELECT 客户号
   FROM 客户产品 客户产品 1
   WHERE  (j)  
        (SELECT *
        FROM 客户产品  客户产品 2
        WHERE  (k)  
             (SELECT*
             FROM 客户产品  客户产品 3
             WHERE  (l)));

选项

答案(1)CREATE VIEW 客户产品 AS ( SELECT 客户号,产品号 FROM 订单,订单明细 WHERE 订单明细.订单号=订单.订单号): (2)(j) NOT EXISTS (k)客户号=’01’AND NOT EXISTS (l)客户产品1.客户号=客户产品3.客户号 AND 客户产品2.产品号 =客户产品 3.产品号

解析 关于定义视图的一般格式如下:
   Create View<视图名>[(<列名>[,<列名>]...)]
                    AS<子查询>
                    [With Check Option]
   据题意,一个订单涉及多个产品,订单中的每个产品对应一项订单明细。一个订单对应一个客户,一个客户可以有多个订单。要建立客户号和产品号的关系,必须通过订单和订单明细。一个客户对应多个订单,一个订单对应多项订单明细,一项订单明细对应一个产品。所以,应建立视图如下:
   CREATE VIEW 客户产品 AS(
   SELECT 客户号,产品号
   FROM 订单,订单明细
   WHERE 订单明细.订单号=订单.订单号);
   要查找至少购买了01号客户购买的所有产品的客户号,可借助上述的客户产品视图。通过该视图,可以知道每个客户购买过的产品号。根据01号客户购买的所有产品号,看看是否存在这样的客户号,其对应的产品号集合中包含01号客户所购买的产品号。查找可以进一步转换成查询客户X,使得不存在这样的产品Y,01号客户购买了 Y,而客户X没有购买。
转载请注明原文地址:https://kaotiyun.com/show/AzTZ777K
0

相关试题推荐
最新回复(0)