对于教学数据库中基本表SC,已建立下列视图:
CREATEVIEWS_GRADE(S#,C_NUM,AVG_GRADE)
ASSELECTS#,COUNT(C#),AVG(GRADE)
FROMSC
GROUPBYS#;
试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。
(1)SELECT*
FR()MS_GRADE:
(2)SELECTS#,C_NUM
FROMS_GRADE
WHERE
对于教学数据库中基本表SC,已建立下列视图:
CREATEVIEWS_GRADE(S#,C_NUM,AVG_GRADE)
ASSELECTS#,COUNT(C#),AVG(GRADE)
FROMSC
GROUPBYS#;
试判断下列查询和更新是否允许执行。若允许,写出转换到基本表SC上的相应操作。
(1)SELECT*
FR()MS_GRADE:
(2)SELECTS#,C_NUM
FROMS_GRADE
WHEREAVG_GRADE>80;
(3)SELECTS#,AVG_GRADE
FROMS_GRADE
WHEREC_NUM>(SELECTC_NUM
FR.OMS_GRADE
WHERES#=′S4′);
(4)UPDATES_GRADE
SETC_NUM=C_NUM+1
WHERES#=′S4′;
(5)DELETE
FROMS_G_RADE
WHEREC_NUM>4;
【正确答案】:(1)对视图查询是允许的。 转换成基本表SC上的操作为 SELECT S#,COUNT(*),AVG(GRADE) FROM SC GROUP BY S#; (2)对视图查询是允许的。 转换成基本表SC上的操作为 SELECT S#,COUNT(*) FROM SC GROUP BY S# HAVING AVG(GRADE)>80; (3)不能转换成相应的基本表SC上的查询语句。 (4)该视图不能更新,因为视图虽由一个表生成,但生成时用了聚合函数(AVG,COUNT); (5)该视图不能更新,因为视图虽由一个表生成,但生成时用了聚合函数。
Top