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

admin2009-05-15  37

问题 根据上述说明,由SQL定义的“职工”和“部门”的关系模式,以及统计各部门的人数C、工资总数Totals、平均工资Averages的D_S视图如下所示,请在空缺处填入正确的内容。
   Create Table 部门 (部门号    Char(1)  (a)  
                      部门名                     Char(16),
                      负责人代码                 Char(4),
                      任职时间                   DATE,
                       (b)   (职工号));
   Create Table 职工 (职工号  Char(4),
                  姓名    Char(8),
                  年龄    NUMDER(3),
                  月工资  NUMDER(4),
                  部门号  Char(1),
                  电话    Char(8),
                  办公室  Char(8),
                   (a)  (职工号),
                   (c)  (部门号),
                  CHECK(  (d)  ));
   Create View D_S(D,C,Totals,Averages)  As
                         (Select  部门号,  (e)  
                             from  职工
                               (f)
在问题1定义的视图D_S上,下面哪个查询或更新是允许执行的,为什么?
   (1)Update D_S set D=3 where D=4;
   (2)Delete from D_S where C>4;
   (3)Select D,Averages from D_S
   where C>(Select C from D_S where D=:dept);
   (4)Select D,C from D_S
   where Totals>10000;
   (5)Select* from D_S

选项

答案(1)和(2)都不能执行,因为使用分组和聚集函数定义的视图是不可更新的。 (3)不一定能执行,具体要看视图的返回值的情况。 (4)和(5)可以执行,因为给出的SQL语句与定义D_S视图的SQL语句合并起来验证有效。

解析 做这种类型的题目时,只要把题目给出的SQL语句与定义该视图的SQL语句合并起来验证是否有效即可。在问题1的分析中,我们已经求出了定义该视图的SQL语句如下:
   Create View D_S(D,C,Totals,Averages)AS  (Select 部门号,Count (职工号), SUN (月工资),AVG (月工资)  From 职工 Group by 部门号)
   (1)合并结果为:Update职工Set部门号=3 Where 部门号 =4 Group by 部门号。因为Where中不能包括Group聚合函数,因此不能执行。
   (2)合并结果为:Delete From 职工Where Count(职工号)>4 Group by 部门号,因此也不能执行。
   (3)这种要看视图的返回值的情况。因此不一定能执行。
   (4)可以。
   (5)显然该语句能执行。
转载请注明原文地址:https://kaotiyun.com/show/zsTZ777K
0

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