视图的应用Word格式.docx
《视图的应用Word格式.docx》由会员分享,可在线阅读,更多相关《视图的应用Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
(1)基于单个表按投影操作定义视图。
定义包含教师编号和姓名的视图
createviewvas
select教师编号,姓名
from管理.教师
图1视图的定义成功图
(2)基于单个表按选择操作定义视图。
定义职称为教授的视图
createviewv_orderasselect*from管理.教师
where职称='
教授'
图2定义教授视图
(3)基于单个表按选择和投影操作定义视图。
定义v_cuss视图,选择教师编号,姓名,职称这三列,并且职称为教授
createviewv_cussasselect教师编号,姓名,职称
图3基于选择和投影操作定义视图
(4)基于多个表根据连接操作定义视图。
定义v_join视图,包含教师编号,职称,课程编号,课程名称,来源于教师表和课程表的连接,通过教师编号和责任教师进行连接
createviewv_joinas
select教师编号,职称,课程编号,课程名称from管理.教师join管理.课程
on教师.教师编号=课程.责任教师
图4基于多个表建立连接视图
(5)基于多个表根据嵌套操作定义视图。
创建v_item视图,通过教师表和课程表的嵌套,视图中选择的是教的课程是公共基础的教师的全部信息。
createviewv_itemasselect*from管理.教师
where教师编号in(
select责任教师from管理.课程
where课程性质='
公共基础'
)
图5基于多个表嵌套定义视图
(6)定义含有虚字段的视图。
添加的虚字段是年工资。
createviewv_sal(教师编号,姓名,月工资,年工资)as
select教师编号,姓名,工资,工资*12from
管理.教师
图6定义含有虚字段的视图
2.分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。
2.1查询v-cuss视图
select*fromv_cuss
图7v_cuss视图查询结果
2.2v_cuss视图和v_item视图的连接查询:
通过教师编号进行视图的连接查询
selectv_cuss.教师编号,v_cuss.姓名,专业fromv_cussjoinv_item
onv_cuss.教师编号=v_item.教师编号
图7视图的连接查询
2.3v_order视图和v_join视图进行嵌套查询:
通过教师编号进行嵌套查询,查询职称为教授的教师的教师编号,姓名,工资和院系。
selectv_order.教师编号,v_order.姓名,v_order.工资,v_order.院系fromv_order
wherev_order.教师编号in(
selectv_join.教师编号fromv_join
where职称='
图8视图的嵌套查询
3.在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。
3.1插入操作:
insertintov_joinvalues('
1011'
'
助教'
101'
高数'
v_join不是行列子集视图,以上这条插入语句,在转换成对基本表的操作的时候回涉及教师表和课程表,这种涉及多个表的视图插入操作是不允许的,因此以上语句插入失败。
图9插入失败图
insertintovvalues('
朱老师'
v视图的定义选取某些行和某些列,并且包含基本表中的关键字,所以该视图是行列子集视图,此视图可以进行插入操作。
图10视图成功插入图
3.2更新操作:
更新v_join视图中教师编号为1003的职称。
updatev_joinset职称='
where教师编号='
1003'
图11更新之前的v_join视图
图12更新之后的v_join视图
3.3删除操作:
删除v_join视图中教师编号为1003的元祖,但是这个视图涉及多个基本表,然而删除的操作就是在对于基本表进行操作。
deletefromv_joinwhere教师编号='
图13无法进行删除操作
3、实验分析与小结:
本次的实验主要是建立视图,然后对视图进行更新,插入删除等操作,视图是虚拟表,对视图的所有操作实际上都要转换成对基本表的操作,所以有很多对于视图的操作是不能成功的。
其实基于多个表连接建立视图和基于多个表嵌套建立视图的具体语句是类似于建表的语句。
四、其它
1.视图的含义和作用是什么?
它与基本表的区别是什么?
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。
从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。
从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。
视图与基本表的区别如下:
1)视图是已经编译好的SQL语句,而表不是。
2)视图没有实际的物理记录。
而表有。
3)表是内容,视图是窗口
4)表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改
5)表是内模式,试图是外模式
6)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。
从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7)表属于全局模式中的表,是实表;
视图属于局部模式的表,是虚表。
8)视图的建立和删除只影响视图本身,不影响对应的基本表。
得分(百分制)