欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

在"学生-选课-课程"数据库中有三个关系:S(S,SNAME,SEX,AGE,S@D)@, SC(S,C,GRADE), C(C,CNAME,TEA

时间:2017-08-09

在"学生-选课-课程"数据库中有三个关系:S(S,SNAME,SEX,AGE,S@D)@, SC(S,C,GRADE), C(C,CNAME,TEACHER)。它们的主码分别是S,(S,C),C,并且其他属性都允许为空值(NULL)。用下面的SQL语句创建了两个视图:

create view CS_S as select S,SNAME,AGE from S where SD = 计算机系 ;

create view S_G(S,GAVG) as select S,avg(GRADE) from SC group by S ;

若用下面的SQL语句对上述视图进行修改,它们能被成功执行吗?为什么?

(1) update CS_S set SNAME = WANG PING where S = 200301001 ;

(这里假定在表S中存在学生号S = 200301001 的行。)

(2) insert into CS_S values ( 200302189 , YANG XIN , 21 ) ;

(这里假定在表S中不存在学生号S = 200302189 的行。)

(3) update S_G set GAVG = 85 where S = 200301001 ;

(这里假定在表SC中存在学生号S = 200301001 的行。)

要求:

首先回答这三个SQL语句中哪个(些)能被成功执行,哪个(些)不能被成功执行,再进一步说明能被成功执行或不能被成功执行的理由。

答案说明:本题目答案来自网络整理或转载,最终答案请以官网为准。


答 案:1.第(1)和(2)两个SQL语句能被成功执行;第(3)个SQL语句不能被成功执行。2.因为对视图的修改最终要转换为对基本表的修改。对于第(1)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:update S set SNAME = WANG PINGwhere SD = 计算机系 and S# = 200301001 ;对于第(2)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:insert into S values ( 200302189 YANG XIN NULL21 计算机系 )或insert into S ( S#SNAMEAGES@D)@values ( 200302189 YANG XIN 21计算机系 )转换后的这两个SQL语句在本题意的假定下是能够被成功执行的。所以第(1)和(2)个SQL语句能被成功执行。对于第(3)个SQL语句不能被成功执行的理由是:由于视图S_G中的一个行是由表SC中若干行经过分组求平均值得到的因此对视图S_G的更新就无法转换成对基本表SC的更新。所以第(3)个SQL语句不能被成功执行。
1.第(1)和(2)两个SQL语句能被成功执行;第(3)个SQL语句不能被成功执行。2.因为对视图的修改最终要转换为对基本表的修改。对于第(1)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:update S set SNAME = WANG PINGwhere SD = 计算机系 and S# = 200301001 ;对于第(2)个SQL语句能被成功执行的理由是:执行这个SQL语句将转换成执行如下的SQL语句:insert into S values ( 200302189 , YANG XIN , NULL,21, 计算机系 )或insert into S ( S#,SNAME,AGE,S@D)@values ( 200302189 , YANG XIN ,21,计算机系 )转换后的这两个SQL语句,在本题意的假定下是能够被成功执行的。所以第(1)和(2)个SQL语句能被成功执行。对于第(3)个SQL语句不能被成功执行的理由是:由于视图S_G中的一个行是由表SC中若干行经过分组求平均值得到的,因此对视图S_G的更新就无法转换成对基本表SC的更新。所以第(3)个SQL语句不能被成功执行。
相关文章

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。