1、数据库视图实验实验六 视图一、实验内容 1.建立计算机科学与技术系的学生的视图View_Stu,并要求进行修改和插入操作时仍需保证该视图只有计算机科学与技术系的学生。(做完之后在视图中添加一行,Sdept中随便写其他系,然后运行观看结果)2.建立计算机科学与技术系选修了数学分析且成绩在60分以上的学生的视图View_grade3.定义一个反映学生年份的视图4.将所有女生的学号以及他的平均成绩定义为一个视图5.删除第4题中的视图,并思考cascade的作用6.在第3题的视图中找出年龄小于25岁的学生7.在第4题中的视图查询平均成绩在70分以上的学生学号和平均成绩8.将第1题的视图View_Stu
2、中学号为20040744009的姓名改为“刘晨”9.向View_Stu中插入一条新的学生记录,其中学号为20040744020,姓名为赵新,出生年月为1990-8-2310.删除View_Stu中学号为20040744020的记录(验证视图View_grade是否能更新。思考视图在什么情况下不能更新)11.对每个同学找出他获得最高成绩的课程号、课程名以及相应的课程分数,并将查询结果作为VMgrade视图保存。二、实验过程1.打开查询分析器,输入代码create view View_Stuasselect Sno,Sname,Sbirthfrom tStudentwhere Sdept=计算机科
3、学与技术with check option结果,创建成功在视图中添加一行,令Sname=丁欣雨 ,Sdept=通信工程insertinto View_Stuvalues (20040744020,丁欣雨,1990-8-7);结果提示错误:试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束的条件。语句已终止。2.建立计算机科学与技术系选修了数学分析且成绩在60分以上的学生的视图View_grade首先,建立选修了数学分析的计算机科学与技术系学生的视图view_grad
4、e1create view view_grade1(Sno,Sname,Grade)asselect tStudent.Sno,Sname,tSC.Gradefrom tStudent,tSCwhere Sdept=计算机科学与技术 and tStudent.Sno=tSC.Sno and tSC.Cno in (select Cno from tCourse where Cname=数学分析)再建立分数大于等于60的学生视图View_gradecreate view View_gradeasselect Sno,Sname,Gradefrom view_grade1where Grade=6
5、0结果:3.定义一个反映学生年份的视图create view View_birthasselect Sno,Sname,Sbirth=year(Sbirth)from tStudent如图:结果:4.将所有女生的学号以及他的平均成绩定义为一个视图SF_Gcreate view SF_G(Sno,Gavg) /*female students grade*/asselect Sno,avg(Grade)from tSCwhere Sno in(select Sno from tStudent where Ssex=女)group by Sno结果:5.删除第4题中的视图,并思考cascade的作
6、用视图已成功删除:CASCADE的作用是删除视图和该视图导出的所有视图6.在第3题的视图中找出年龄小于25岁的学生select Sno,Sage:,2013-Sbirthfrom View_birthwhere 2013-Sbirth=70;结果:8.将第1题的视图View_Stu中学号为20040744009的姓名改为“刘晨”update View_Stuset Sname=刘晨where Sno=20040744009;结果:9.向View_Stu中插入一条新的学生记录,其中学号为20040744020,姓名为赵新,出生年月为1990-8-23insertinto tStudent(Sno
7、,Sname,Sbirth,Sdept)values(20040744020,赵新,1990-8-23,计算机科学与技术);系统自动将其放入了视图中:10.删除View_Stu中学号为20040744020的记录(验证视图View_grade是否能更新。思考视图在什么情况下不能更新)deletefrom View_Stuwhere Sno=20040744020;结果:视图无法更新的条件:1. 视图由两个以上基本表导出。2.视图的字段来自字段表达式或常数时,不能进行update和insert操作,但可以进行delete操作。3.视图的字段来自聚集函数。4.视图定义中含有group by和dis
8、tinct。5.视图定义中有嵌套查询,且内层查询的from里面是该视图的基本表11.对每个同学找出他获得最高成绩的课程号、课程名以及相应的课程分数,并将查询结果作为VMgrade视图保存。先建立最高成绩和学号的视图VMgarde1:create view VMgrade1asselect Sno,max(Grade) Mgradefrom tSCgroup by Sno再建立连接:create view VMgrade(Sno,Cno,Cname,Grade)asselect distinct tSC.Sno,tSC.Cno,tCourse.Cname,tSC.Gradefrom tSC,tCourse,VMgrade1where tSC.Sno=VMgrade1.Sno and tSC.grade=VMgrade1.Mgrade and tSC.Cno=tCourse.Cno结果:三、实验心得 视图的作用有三个:一:是安全保护,二:是简化查询,三:是以多种角度看待同一数据。灵活运用视图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1