欢迎来到天天文库
浏览记录
ID:38811616
大小:342.22 KB
页数:44页
时间:2019-06-19
《零点起飞学Oracle之使用视x》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章使用视图视图在Oracle中应用很普遍。视图在数据库中可以看作是一张虚拟的表。使用视图可以补充表结构在某些需求方面的不足,可以让开发人员更方便地查询复杂数据。本章主要讲解视图定义、关系视图的创建和使用、内嵌视图的使用、对象视图的使用、物化视图的使用。10.1视图简介在Oracle中,视图可以实现集中、简化数据库的作用,同时还可以提供安全保证。用户可以像操作普通表一样操作视图。视图往往不占用数据库额外的存储空间,而只存储定义。10.1.1视图定义视图是从一个或者多个表中导出的表,其结构和数据都是建立在对表的查询基础上的。和真实的表一样,视图也包括多个被定义的数据列和多个数据行。从
2、本质上讲,这些数据列和数据行来自于其所引用的表,视图本身不包含数据,它只是一个查询语句的结果,所有数据最终是从表中获取的,通常可以将这些称为源表或基表。10.1.1视图定义视图不是真实存在的基础表而是一个虚拟表。视图所对应的数据并不是实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。从关系代数理论上来说,数据表可以看作关系。这种关系往往代表了现实世界的真实实体。而关系可以通过各种运算(如交、差、并、投影)来获得新的关系。在查询员工职位信息状况的实例中,可以通过表之间的关系运算来获得所需的结果集合。而该结果集则具有临时性,一旦使用完毕,即可“丢弃”。这些结果数据,并不形成真正的
3、数据表,也不会持久化到数据库中。视图也不存储查询的结果,但是存储了查询的定义。也就是说,对于关系运算的运算步骤进行存储。因此,视图的本质就是关系运算的定义。10.1.2为什么使用视图视图有很多优点,主要表现在大致两个方面上。1.封装查询数据库虽然可以存储海量数据,但是在数据表设计上却不可能为每种关系创建数据表。因为这种做法很明显的造成了数据库中数据的大量冗余。视图则是解决该问题的最佳策略。因为视图可以存储查询定义(或者说关系运算),那么,一旦使用视图存储了查询定义,就如同存储了一个新的关系。用户可以直接对视图中所存储的关系进行各种操作,就如同面对的是真实的数据表。10.1.2为什么使用
4、视图2.灵活的控制安全性一个数据表可能含有很多列。但是这些列的信息,对于不同角色的用户,可访问的权限有可能不同。例如,在员工表中,可能存在着员工工号、员工姓名、员工年龄、员工职位、员工家庭住址、员工社会关系等信息。对于普通用户(例如普通员工),有可能需要访问员工表,来查看某个工号的员工的姓名、职位等信息,而不允许查看家庭住址、社会关系等信息;对于高级用户(例如人事经理),则需要关注所有信息。那么,这就涉及到数据表的安全性。利用视图可以灵活的实现这一策略。10.2关系视图Oracle数据库中,视图可以分成这样几种类型,关系视图、内嵌视图、对象视图和物化视图。关系视图是虚拟表,同时也是最常
5、用的视图。关系视图可以看作对简单或复杂查询的定义,这种视图允许开发者在数据库字典中查看它的信息。10.2.1创建关系视图视图是由select子查询语句定义的,基于一个或多个表的逻辑表。视图的创建比较简单。Oracle视图是作为数据库对象存在的,因此,创建之后也可以通过工具或数据字典来查看视图的相关信息。1.创建关系视图创建关系视图应该使用createview命令,其语法形式如下所示。createview视图名称as查询语句
6、关系运算其中,createview是创建关系视图的命令;其后紧跟视图名称;as后面连接的是视图的查询定义(或者说关系运算)。【示例10-1】在数据库中存在着名为em
7、ployees的数据表,如欲创建针对普通用户的视图vw_e。该视图仅可访问表中的department_id、first_name、hire_date、job_id。10.2.1创建关系视图2.查看视图定义视图一旦创建,其定义即可存在于数据库中。可以通过SQLDeveloper的Views窗口来查看视图VW_E在数据库中的信息。数据字典user_view是Oracle数据库预定义的视图。可以通过查询该视图的数据,来查看当前用户拥有的所有视图信息。10.2.2使用关系视图视图作为虚表,在一定的条件下可以像表一样完成数据操纵的功能。使用视图进行数据操纵拥有更好的安全性和灵活性。我们可以对视图
8、进行插入、更新操作。1.查询视图查询视图的方法与查询表的方法是相同的。【示例10-2】在创建了视图vw_e之后,即可利用查询语句来获得视图中所包含的数据。10.2.2使用关系视图2.更新视图数据用户可以利用update语句来更新视图中的数据,而视图本身并不存储数据。其数据来源于基础数据表。因此,更新视图数据,实际是更新基础表中的数据。【示例10-3】在员工视图vw_e中,更新视图。10.2.2使用关系视图3.查看关系视图修改功能利用关系视图,除
此文档下载收益归作者所有