在上题的“学生-选课-课程”数据库中,它们的主码分别是Sno,(Sno,Cno),Cno,并且其他属性都允许为空值(NULL)。用下面的SQL语句创建了两个视图: CREATE VIEW CS_S AS SELECT Sno,Sname,Sage FROM S WHERE Sdept=‘计算机系’; CREATE VIEW S_G( Sno,Gavg)AS SELECT Sno,avg(Grade) FROM SC GROUP BY Sno ; 若用下面的SQL语句对上述视图进行修改,它们能被成功执行吗?为什么?(1) UPDATE CS_S SET Sname =’王萍’ WHERE Sno = ’S200500101’;(这里假定在表S中存在学号Sno = ’S200500101’的行)(2) INSERT INTO CS_S VALUES(’S200502189’, ’杨青’, 21 ) ;(这里假定在表S中不存在学号Sno = ’S200502189’的行)(3) UPDATE S_G SET Gavg = 85 WHERE Sno = ’S200501001’;(这里假定在表SC中存在学号Sno = ’S200501001’的行)要求: 首先回答这三个SQL语句中哪个(些)能被成功执行,哪个(些)不能被成功执行,再进一步说明能被成功执行或不能被成功执行的理由。
【参考答案】
第(A)和(B)两个SQL语句能被成功执行;第(C)个SQL语句不能被成功执行。 因为对视图的修改最终要转换为对基本表的修改。 对于第(A)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句: UPDATE S SET Sname =&......