问题 问答题

[问题2] 请根据如下查询语句,回答问题(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);

[分析]: 本题考核的知识点包括SQL的查询命令与关系代数表达式的互相转换以及SQL的查询优化。 SELECT语句的功能是:查询一次订购(或购买)产品号为02的数量大于10的客户号。 根据关系代数表达式的定义,将上述查询语句转换成对应的关系代数表达式为:

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

判断题
填空题