学生成绩管理数据库 下载本文

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 页