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

admin2009-05-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,
   PRTMARYKEY(订单号),
     (c));
请根据如下查询语句,回答问题(d)、(e)和(f)。
SELECT 客户号
FROM 订单,订单明细
WHERE 订单明细.订单号=订单.订单号 AND
     产品号=’02’AND 数量>10;
(d)上述查询语句的功能是什么?请简要回答。(30个字以内)
(e)将上述查询语句转换成对应的关系代数表达式。

选项

答案(d)查询一次订购(或购买)产品号为02的数量大于10的客户号。 (e) [*] (f)可以优化。优化的SQL语句为: SELECT 客户号 FROM 订单 WHERE 订单号 IN (SELECT 订单号 FROM 订单明细 WHERE 产品号=’02’AND 数量>10);

解析 据题意:该SELECT语句的功能是:查询一次订购(或购买)产品号为02的数量大于10的客户号。
   根据关系代数式的定义,可将该查询语句转换成对应的关系代数表达式:
   
   该SELECT语句,在进行多表查询时,采用的是相关子查洵。由于相关子查询在查询时要做JOIN连接,性能不是最优。所以可以考虑用不相关子查询,来提高性能。优化的SQL语句为:
   SELECT 客户号
   FROM 订单
   WHERE 订单号 IN
        (SELECT 订单号
         FROM 订单明细
         WHERE 产品号=’02’ AND 数量>10);
转载请注明原文地址:https://kaotiyun.com/show/yzTZ777K
0

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