计算机等级考试三级数据库历年真题解析[5]

文章作者 100test 发表时间 2007:08:13 11:49:11
来源 100Test.Com百考试题网


在"学生-选课-课程"数据库中有三个关系:S(S#,SNAME,SEX,AGE,SD),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)。它们的主码分别是S#,(S#,C#),C#,并且其他属性都允许为空值(NULL)。用下面的SQL语句创建了两个视图:
createviewCS_Sas0selectS#,SNAME,AGEfromS
whereSD=’计算机系’;
createviewS_G(S#,GAVG)as0selectS#,avg(GRADE)
fromSCgroupbyS#;
若用下面的SQL语句对上述视图进行修改,它们能被成功执行吗?为什么?
(1)0updateCS_SsetSNAME=’WANGPING’whereS#=’200301001’;
(这里假定在表S中存在学生号S#=’200301001’的行。)
(2)insertintoCS_Svalues(’200302189’,’YANGXIN’,21);
(这里假定在表S中不存在学生号S#=’200302189’的行。)
(3)0updateS_GsetGAVG=85whereS#=’200301001’;
(这里假定在表SC中存在学生号S#=’200301001’的行。)
要求:
首先回答这三个SQL语句中哪个(些)能被成功执行,哪个(些)不能被成功执行(12分),再进一步说明能被成功执行或不能被成功执行的理由(18分)。

答案:
(1).第(1)和(2)两个SQL语句能被成功执行;第(3)个SQL语句不能被成功执行。
(2).因为对视图的修改最终要转换为对基本表的修改。
Ⅰ对于第(1)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:
0updateSsetSNAME=’WANGPING’
whereSD=’计算机系’andS#=’200301001’;
Ⅱ对于第(2)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:
insertintoSvalues(’200302189’,’YANGXIN’,NULL,21,’计算机系’)
或insertintoS(S#,SNAME,AGE,SD)values(’200302189’,’YANGXIN’,21,’计算机系’)
转换后的这两个SQL语句,在本题意的假定下是能够被成功执行的。所以第(1)和(2)个SQL语句能被成功执行。
Ⅲ对于第(3)个SQL语句不能被成功执行的理由是:由于视图S_G中的一个行是由表SC中若干行经过分组求平均值得到的,因此对视图S_G的更新就无法转换成对基本表SC的更新。所以第(3)个SQL语句不能被成功执行。


src="/ncre/js/wxgg.js">

相关文章


计算机等级考试三级数据库历年真题解析[4]
计算机等级考试三级数据库历年真题解析[3]
计算机等级考试三级数据库历年真题解析[2]
计算机等级考试三级数据库历年真题解析[5]
全国计算机等级考试三级数据库技术考试历年真题
计算机等级考试三级数据库历年真题解析[1]
2006年9月全国计算机等级考试三级数据库技术考试真题答案
2006年4月全国计算机等级考试三级数据库技术考试真题
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛