在这个系列会更新一些最近老师要求写的实验报告~
大家尽量对着我的文章做一个参考,不要盲目的cv,毕竟这个对于我们以后的工作学习还是十分重要的。
一、实验目的与任务
目的任务:熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理
二、实验内容
1 写出创建满足下述要求的视图的SQL语句,并执行所写代码。
(1)包含学生的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
(2)包含学生的学号、姓名、选修的课程名和考试成绩的视图。
(3)统计每个学生的选课门数,要求列出学生学号和选课门数的视图。
(4)统计每个学生的修课总学分,要求列出学生学号和总学分的视图(说明:考试成绩大于等于60才可获得此门课程的学分)。
2 利用第1题建立的视图,完成如下查询。
(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
(2)查询选课门数超过3门的学生的学号和选课门数。
(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。
(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
3.使用WITH CHECK OPTION,在第1题建立的视图(1)的基础上,再创建一个“计算机系”同学的学号、姓名、所在系、年龄,课程号、课程名、课程学分的视图。
(1)增加一条记录,
0841101 张新 计算机系 20 C001 高等数学 4
(2)修改这条记录为
0841101 张新 物理系 20 C001 高等数学 4
以上两个操作是否能够实现?为什么?可以实现的,写出SQL语句。
不能,语句不能实现是因为涉及多张表的值。
4.以下操作能否实现,如果能实现,给出相应的SQL语句,否则,解释不能实现的原因。
(1)对Student表,创建一个只包含男生信息的视图。对此视图执行将“李勇”的年龄更新为22岁。
(2)在上题创建的视图中。删除“刘晨”同学的记录。
DELETE 语句与REFERENCE 约束"FK__SC__Sno__0BC6C43E"冲突。该冲突发生于数据库"学生数据库",表"dbo.SC", column ‘Sno’
(3)第3题建立的“计算机系”同学的视图,对此视图执行将“李勇”的年龄更新为22岁。
涉及到原表,不能更新
(4)第3题建立的“计算机系”同学的视图,对此视图执行删除“刘晨”同学的记录。
不可更新,因为修改会影响多个基表