早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

请根据如下查询语句,回答问题(d),(e)和(f)。 SELECT客户号 FROM订单,订单明细 WHERE订单明细.订单

题目

请根据如下查询语句,回答问题(d),(e)和(f)。

SELECT客户号

FROM订单,订单明细

WHERE订单明细.订单号=订单.订单号AND

产品号='02' AND

数量>10;

(d) 上述查询语句的功能是什么?请简要回答。(30个字以内)

(e) 将上述查询语句转换成对应的关系代数表达式。

(f) 上述SQL查询语句是否可以进一步优化?如可以,给出优化后的SQL查询语句。

参考答案
正确答案:查询一次订购(或购买)产品号为02的数量大于10的客户号 (e) (f)可以优化。优化的SQL语句为: SELECT客户号 FROM 订单 WHERE 订单号 IN (SELECT 订单号 FROM 订单明细 WHERE产品号='02' AND数量>10);
查询一次订购(或购买)产品号为02的数量大于10的客户号 (e) (f)可以优化。优化的SQL语句为: SELECT客户号 FROM 订单 WHERE 订单号 IN (SELECT 订单号 FROM 订单明细 WHERE产品号='02' AND数量>10); 解析:本题考核的知识点包括SQL的查询命令与关系代数表达式的互相转换以及SQL的查询优化。
SELECT语句的功能是:查询一次订购(或购买)产品号为02的数量大于10的客户号。
根据关系代数表达式的定义,将上述查询语句转换成对应的关系代数表达式为:

该SELECT语句,在进行多表查询时,采用的是相关子查询。由于相关子查询查询时要做连接JOIN,性能不是最优。可以考虑采用不相关子查询,来提高性能。优化的 SQL语句为:
SELECT客户号
FROM订单
WHERE订单号IN
(SELECT订单号
FROM订单明细
WHERE产品号='02' AND数量>10);