5. 依据上述的四个表,用SQL语句完成如下查询 1) 将某班的全体学生的成绩置零; 把00321班的全体学生的成绩置零。 输入sql语句为:
update Grade set Gmark=0 where Sno in (select Sno from student where Clno='00312')
运行发现报如下错误:
UPDATE 语句与 COLUMN CHECK 约束 'CK_Grade' 冲突。该冲突发生于数据库 'Student',表 'Grade', column 'Gmark'。 语句已终止。
原因是Grade表的Gmark字段,在简表时根据题目要求建立了CHECK约束,所以无法把成绩置零,因为这样违反了CHECK约束。 2) 删除某班的选课记录; 删除00312班的选课记录。 输入sql语句为:
delete from Grade where Sno in (select Sno from student where Clno='00312')
在下面窗口显示查询结果如下图3-26所示。
第 41 页 共 50 页
图3-26
3) 某学生退学了,从数据库中删除有关该生的记录;
学号为2000444的学生退学了,从数据库中删除有关该生的记录。 输入sql语句为:
删除学生记录涉及3个表,student表、class表和grade表。其中class表只有在此学生是班长的情况下修改学号为2000445同学为班长。 delete from student where Sno='2000444' delete from grade where Sno='2000444'
update greade set monitor=’2000445’ where monitor=‘2000444’ 6. 视图操作
1) 建立某班选修了某课程的学生视图; 建立00314班选修了课程号为6的视图 输入sql语句为:
create view is_test1 as select student.Sno,student.Sname, student.Ssex, student.Sage, student.Clno from grade,student where grade.Sno=student.Sno and Clno= '00314' and Cno=‘6’
第 42 页 共 50 页
执行结果如下图3-27所示.
图3-27
查询建立的is_test1视图,如下图3-28所示.
图3-28
2) 建立某班选修了某课程且成绩不及格的学生视图
建立“00312”班级选修了课程号为“2”的课程并且成绩不及格的学生视图。
输入的sql语句为:
create view is_test2 as select student.Sno, student.Sname, student.Ssex,student.Sage, student.Clno from student,grade where student.Clno='00312' and grade.Cno='2' and student.Sno=
第 43 页 共 50 页
Grade.Sno and Grade.Gmark<60 执行结果如下图3-29所示:
图3-29
查询建立的is_test2视图,如下图3-30所示.
图3-29
3) 建立由学生学号、姓名、出生年份组成的视图; 输入sql语句为:
select Sno,Sname, (Class.inyear-Sage) as 出生年份 from student, Class where student.Clno=Class.Clno 执行结果如下图3-30所示:
第 44 页 共 50 页