单选题
设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
【答案解析】[解析] 视图是从一个表或多个表或其他视图上导出的表。要创建自定义并且可更新的数据集合,可以使用视图。视图兼有表和查询的特点:与查询相类似的是,视图可以用来从一个或多个相关联的表或视图中提取有用信息;与表相类似的是,视图可以用来更新其中的信息,并将更新结果永久保存在磁盘上。我们可以用视图使数据暂时从数据库中分离成为游离数据,以便在主系统之外收集和修改数据。但是,视图可以生成在表中没有的新字段(如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。