根据上述说明,由SQL定义的“职工”和“部门”的关系模式,以及统计各部门的人数C、工资总数Totals、平均工资Averages的D_S视图如下所示,请在空缺处填入正确的内容。 Create Table 部门 (部门号 CHAR(1) (a)

admin2005-03-20  49

问题 根据上述说明,由SQL定义的“职工”和“部门”的关系模式,以及统计各部门的人数C、工资总数Totals、平均工资Averages的D_S视图如下所示,请在空缺处填入正确的内容。
   Create Table 部门 (部门号    CHAR(1)  (a),
                 部门名          CHAR(16),
                 负责人代码      CHAR(4),
                 任职时间        DATE,
                         (b)        (职工号));
   Create Table职工(职工号      CHAR(4),
                姓名           CHAR(8),
                年龄           NUMBER(3),
                月工资         NUMBER(4),
                部门号         CHAR(1),
                电话           CHAR(8),
                办公室         CHAR(8),
                         (a)  (职工号),
                         (c) (部门号),
                CHECK((d)));
   Create View D_S(D,C,Totals,Averages)As
                  (Select 部门号, (e)     
                        from  职工
                               (f) );
查询每个部门中月工资最高的“职工号”的SQL查询语句如下: Select职工号  from 职工E
  where月工资=(Select Max(月工资)
   from职工as M
   where M.部门号=E.部门号)
   (1)请用30字以内文字简要说明该查询语句对查询效率的影响。
   (2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。

选项

答案此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。 (1)对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。 (2)解答一 改正后的SQL语句使用了临时表: Select Max(月工资) as 最高工资,部门号 into Temp from 职工 Group by部门号 Select 职工号 from 职工,Temp where 月工资=最高工资 and 职工,部门号=Temp.部门号 解答二 Select 职工号 from 职工,(Select Max (月工资) as 最高工资,部门号 Group by 部门号)as depMax where 月工资=最高工资 and 职工.部门号=depMax.部门号

解析 此问考查的是查询效率的问题。在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。
   (1)对于外层的职工关系E中的每一个元组,都要对内层的整个职工关系M进行检索,因此查询效率不高。
   (2)此问有两种解法。
解答一
   改正后的SQL语句使用了临时表:
   Select Max (月工资) as 最高工资,部门号 into Temp  from 职工
           Group by 部门号
   Select 职工号 from 职工,Temp
             where 月工资=最高工资 and 职工.部门号=Temp.部门号
解答二
   Select 职工号 from 职工,(Select Max(月工资) as 最高工资,部门号
                                       Group by部门号)as depMax
            where月工资;最高工资and职工.部门号;depMax.部门号
转载请注明原文地址:https://jikaoti.com/ti/zAN7FFFM
0

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