3.
试题二(20分)阅读下列说明,回答问题1至问题5,将解答填入答题纸的对应栏内。【说明】某工厂的信息管理数据库的部分关系模式如下所示:职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)部门(部门号,部门名,负责人代码,任职时间)关系模式的主要属性、含义及约束如表2-1所示,“职工”和“部门”的关系示例分别如表2-2和表2-3所示。【问题1】根据上述说明,由SQL定义的“职工”和“部门”的关系模式,以及统计各部门的人数C、工资总数Totals、平均工资Averages的D_S视图如下所示,请在空缺处填入正确的内容。(6分)CreateTable部门(部门号CHAR(1)(a),部门名CHAR(16),负责人代码CHAR(4),任职时间DATE,(b)(职工号));CreateTable职工(职工号CHAR(4),姓名CHAR(8),年龄NUMBER(3),月工资NUMBER(4),部门号CHAR(1),电话CHAR(8),办公室CHAR(8),(a)(职工号),(b)(部门号),CHECK((d)));CreateViewD_S(D,C,Totals,Averages)As(Select部门号,(e)from职工(f))【问题2】对于表2-2、表2-3所示的“职工”和“部门”关系,请指出下列各行是否可以插入,为什么?(3分)【问题3】在问题1定义的视图D_S上,下面哪个查询或更新是允许执行的,为什么?(3分)(1)UpdateD_SsetD=3whereD=4;(2)DeletefromD_SwhereC>4;(3)SelectD,AveragesfromD_SwhereC>(SelectCfromD_SwhereD=:dept);(4)SelectD,CFromD_SwhereTotals>10000;(5)Select*fromD_S;【问题4】查询每个部门中月工资最高的“职工号”的SQL查询语句如下:Select职工号from职工Ewhere月工资=(SelectMax(月工资)from职工asMwhereM.部门号=E.部门号)(1)请用30字以内文字简要说明该查询语句对查询效率的影响。(3分)(2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。(3分)【问题5】假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,如下的Select查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既可以完成相同功能又可以提高查询效率的SQL语句。(2分)Select姓名,年龄,月工资from职工where年龄>45or月工资<1000;[20分]
A(1)(a),部门名CHAR(16),负责人代码CHAR(4),任职时间DATE,(b)(职工号));CreateTable职工(职工号CHAR(4),姓名CHAR(8),年龄NUMBER(3),月工资NUMBER(4),部门号CHAR(1),电话CHAR(8),办公室CHAR(8),(a)(职工号),(b)(部门号),CHECK((d)));CreateViewD_S(D,C,Totals,Averages)As(Select部门号,(e)from职工(f))【问题2】对于表2-2、表2-3所示的“职工”和“部门”关系,请指出下列各行是否可以插入,为什么?(3分)【问题3】在问题1定义的视图D_S上,下面哪个查询或更新是允许执行的,为什么?(3分)(1)UpdateD_SsetD=3whereD=4;(2)DeletefromD_SwhereC>4;(3)SelectD,AveragesfromD_SwhereC>(SelectCfromD_SwhereD=:dept);(4)SelectD,CFromD_SwhereTotals>10000;(5)Select*fromD_S;【问题4】查询每个部门中月工资最高的“职工号”的SQL查询语句如下:Select职工号from职工Ewhere月工资=(SelectMax(月工资)from职工asMwhereM.部门号=E.部门号)(1)请用30字以内文字简要说明该查询语句对查询效率的影响。(3分)(2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。(3分)【问题5】假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,如下的Select查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既可以完成相同功能又可以提高查询效率的SQL语句。(2分)Select姓名,年龄,月工资from职工where年龄>45or月工资<1000;[20分]