数据库视图实验.docx

上传人:b****7 文档编号:9797518 上传时间:2023-02-06 格式:DOCX 页数:14 大小:351.37KB
下载 相关 举报
数据库视图实验.docx_第1页
第1页 / 共14页
数据库视图实验.docx_第2页
第2页 / 共14页
数据库视图实验.docx_第3页
第3页 / 共14页
数据库视图实验.docx_第4页
第4页 / 共14页
数据库视图实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

数据库视图实验.docx

《数据库视图实验.docx》由会员分享,可在线阅读,更多相关《数据库视图实验.docx(14页珍藏版)》请在冰豆网上搜索。

数据库视图实验.docx

数据库视图实验

实验六视图

一、实验内容

1.建立计算机科学与技术系的学生的视图View_Stu,并要求进行修改和插入操作时仍需保证该视图只有计算机科学与技术系的学生。

(做完之后在视图中添加一行,Sdept中随便写其他系,然后运行观看结果)

2.建立计算机科学与技术系选修了数学分析且成绩在60分以上的学生的视图View_grade

3.定义一个反映学生年份的视图

4.将所有女生的学号以及他的平均成绩定义为一个视图

5.删除第4题中的视图,并思考cascade的作用

6.在第3题的视图中找出年龄小于25岁的学生

7.在第4题中的视图查询平均成绩在70分以上的学生学号和平均成绩

8.将第1题的视图View_Stu中学号为20040744009的姓名改为“刘晨”

9.向View_Stu中插入一条新的学生记录,其中学号为20040744020,姓名为赵新,出生年月为1990-8-23

10.删除View_Stu中学号为20040744020的记录(验证视图View_grade是否能更新。

思考视图在什么情况下不能更新)

11.对每个同学找出他获得最高成绩的课程号、课程名以及相应的课程分数,并将查询结果作为VMgrade视图保存。

二、实验过程

1.打开查询分析器,输入代码

createviewView_Stu

as

selectSno,Sname,Sbirth

fromtStudent

whereSdept='计算机科学与技术'

withcheckoption

结果,创建成功

在视图中添加一行,令Sname=‘丁欣雨‘,Sdept=‘通信工程’

insert

intoView_Stu

values('20040744020','丁欣雨','1990-8-7');

结果提示错误:

试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITHCHECKOPTION,而该操作的一个或多个结果行又不符合CHECKOPTION约束的条件。

语句已终止。

2.建立计算机科学与技术系选修了数学分析且成绩在60分以上的学生的视图View_grade

首先,建立选修了数学分析的计算机科学与技术系学生的视图view_grade1

createviewview_grade1(Sno,Sname,Grade)

as

selecttStudent.Sno,Sname,tSC.Grade

fromtStudent,tSC

whereSdept='计算机科学与技术'and

tStudent.Sno=tSC.Snoand

tSC.Cnoin

(selectCno

fromtCourse

whereCname='数学分析')

再建立分数大于等于60的学生视图View_grade

createviewView_grade

as

selectSno,Sname,Grade

fromview_grade1

whereGrade>=60

结果:

3.定义一个反映学生年份的视图

createviewView_birth

as

selectSno,Sname,Sbirth=year(Sbirth)

fromtStudent

如图:

结果:

4.将所有女生的学号以及他的平均成绩定义为一个视图SF_G

createviewSF_G(Sno,Gavg)/*femalestudents'grade*/

as

selectSno,avg(Grade)

fromtSC

whereSnoin

(selectSno

fromtStudent

whereSsex='女')

groupbySno

结果:

5.删除第4题中的视图,并思考cascade的作用

视图已成功删除:

CASCADE的作用是删除视图和该视图导出的所有视图

6.在第3题的视图中找出年龄小于25岁的学生

selectSno,'Sage:

',2013-Sbirth

fromView_birth

where2013-Sbirth<25;

结果:

7.在第4题中的视图查询平均成绩在70分以上的学生学号和平均成绩

selectSno,Gavg

fromSF_G

whereGavg>=70;

结果:

8.将第1题的视图View_Stu中学号为20040744009的姓名改为“刘晨”

updateView_Stu

setSname='刘晨'

whereSno='20040744009';

结果:

9.向View_Stu中插入一条新的学生记录,其中学号为20040744020,姓名为赵新,出生年月为1990-8-23

insert

intotStudent(Sno,Sname,Sbirth,Sdept)

values('20040744020','赵新','1990-8-23','计算机科学与技术');

系统自动将其放入了视图中:

10.删除View_Stu中学号为20040744020的记录(验证视图View_grade是否能更新。

思考视图在什么情况下不能更新)

delete

fromView_Stu

whereSno='20040744020';

结果:

视图无法更新的条件:

1.视图由两个以上基本表导出。

2.视图的字段来自字段表达式或常数时,不能进行update和insert操作,但可以进行delete操作。

3.视图的字段来自聚集函数。

4.视图定义中含有groupby和distinct。

5.视图定义中有嵌套查询,且内层查询的from里面是该视图的基本表

11.对每个同学找出他获得最高成绩的课程号、课程名以及相应的课程分数,并将查询结果作为VMgrade视图保存。

先建立最高成绩和学号的视图VMgarde1:

createviewVMgrade1

as

selectSno,max(Grade)Mgrade

fromtSC

groupbySno

再建立连接:

createviewVMgrade(Sno,Cno,Cname,Grade)

as

selectdistincttSC.Sno,tSC.Cno,tCourse.Cname,tSC.Grade

fromtSC,tCourse,VMgrade1

wheretSC.Sno=VMgrade1.Snoand

tSC.grade=VMgrade1.Mgradeand

tSC.Cno=tCourse.Cno

结果:

三、实验心得

视图的作用有三个:

一:

是安全保护,二:

是简化查询,三:

是以多种角度看待同一数据。

灵活运用视图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1