我要投稿 投诉建议

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

时间:2021-01-13 17:34:49 计算机等级 我要投稿

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

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

答案:
(1).第(1)和(2)两个SQL语句能被成功执行;第(3)个SQL语句不能被成功执行。
(2).因为对视图的修改最终要转换为对基本表的修改。
Ⅰ对于第(1)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:
updateSsetSNAME=’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语句不能被成功执行。

http://www.cnrencai.com/

【计算机等级考试三级数据库历年真题解析5】相关文章:

计算机等级考试三级数据库历年真题解析(2)10-09

计算机等级考试三级数据库历年真题解析(3)10-09

计算机等级考试三级数据库历年真题解析(1)10-09

计算机等级考试三级数据库历年真题解析汇总10-09

计算机等级考试三级数据库历年真题解析(6)10-09

计算机等级考试三级数据库历年真题解析(4)10-09

全国计算机等级考试三级数据库技术考试历年真题10-09

全国计算机等级考试三级网络技术历年真题汇总05-15

全国计算机等级考试三级信息管理技术历年真题10-09