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

admin2008-02-15  40

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

选项

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

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

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