(36)至(37)题题基于“学生—选课—课程”数据库中的三个关系:
“学生-选课-课程”数据库中的三个关系是:
S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)
设S AVG(SNO,AVG GRADE)是一个基于关系SC定义的学生号和他的平均成绩的视图。下面对该视图的操作语句中,哪一个(些)是不能正确执行的
Ⅰ.UPDATE S AVG SET AVG GRADE=90 WHERE SNO=’2004010601’;
Ⅱ.SELECT SNO,AVG GRADE FROM S AVG WHERE SNO=’2004010601’;
A.仅Ⅰ
B.仅Ⅱ
C.都能
D.都不能
参考答案:A
解析: 视图是从一个表或多个表或其他视图上导出的表。要创建自定义并且可更新的数据集合,可以使用视图。视图兼有表和查询的特点:与查询相类似的是,视图可以用来从一个或多个相关联的表或视图中提取有用信息;与表相类似的是,视图可以用来更新其中的信息,并将更新结果永久保存在磁盘上。我们可以用视图使数据暂时从数据库中分离成为游离数据,以便在主系统之外收集和修改数据。但是,视图可以生成在表中没有的新字段(如S_AVG中的AVG_GRADE),该字段不属于任何一个源表,只能显示,而不能进行更新。
语句1:UPDATE S_AVG SET AVG_GRADE=90 WHERE SNO=’2004010601’
表示将视图S AVG中SNO为“2004010601”记录的AVG GRADE字段更新为90,这是一个无效操作,因为AVG GRADE字段是一个新字段,不属于源表,该字段内容是卤源表数据计算生成的,所以,对该字段内容进行更新后,视图将无法写回源表。当视图再次打开时,数据重新进行计算,所更新值无效。
而语句2表示选择视图中字段,是一个正确语句,故可以执行。所以答案为A。