oracle视图详解.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle视图详解

Oracle?视图(View) 说明 一.?视图的定义 ???????视图(view),也称虚表,?不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的。视图只有逻辑定义。每次使用的时候,?只是重新执行SQL. ???????视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。 ???????视图的定义存在数据库中,与此定义相关的数据并没有再存一份于数据库中。通过视图看到的数据存放在基表中。 ???????视图看上去非常象数据库的物理表,对它的操作同任何其它的表一样。当通过视图修改数据时,实际上是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。由于逻辑上的原因,有些Oracle视图可以修改对应的基表,有些则不能(仅仅能查询)。 ? ???????还有一种视图:物化视图(MATERIALIZED VIEW?),也称实体化视图,快照?(8i?以前的说法)?,它是含有数据的,占用存储空间。 ? 二.?视图的作用 2.1?简单性。 ???????看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。 2.2?安全性。 ???????通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过Oracle视图,用户可以被限制在数据的不同子集上: ???????使用权限可被限制在基表的行的子集上。 ???????使用权限可被限制在基表的列的子集上。 ???????使用权限可被限制在基表的行和列的子集上。 ???????使用权限可被限制在多个基表的连接所限定的行上。 ???????使用权限可被限制在基表中的数据的统计汇总上。 ???????使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。 ???????视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下: ???????1?在表中增加一个标志用户名的列; ???????2?建立Oracle视图,是用户只能看到标有自己用户名的行; ???????3?把视图授权给其他用户。 2.3?逻辑数据独立性。 ???????视图可帮助用户屏蔽真实表结构变化带来的影响。 ???????视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立: ???????1?如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。 ???????2?如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。 ???????3?如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。 ???????4?如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。 ? 三.?视图的基本语法: CREATE[OR REPLACE][FORCE][NOFORCE]VIEW view_name [(column_name)[,….n]] AS Select_statement [WITH CHECK OPTION[CONSTRAINT constraint_name]] [WITH READ ONLY] 说明: view_name :??视图的名字 column_name:?视图中的列名 ? 在下列情况下?,?必须指定视图列的名称 *?由算术表达式?,?系统内置函数或者常量得到的列 *?共享同一个表名连接得到的列 *?希望视图中的列名与表中的列名不同的时候 ? REPLACE:??如果创建视图时,?已经存在此视图,?则重新创建此视图,?相当于覆盖 FORCE:??强制创建视图,?无论的视图所依赖的基表否存在或是否有权限创建 NOFORCE:??只有基表存在且具有创建视图权限时,?才可以创建视图 WITH CHECK OPTION??指出在视图上所进行的修改都要符合select_statement?所指定的限制条件 WITH READ ONLY??只允许查看视图 ? 视图的定义原则:? ???????1.?视图的查询可以使用复杂的?SELECT?语法,包括连接?/?分组查

文档评论(0)

docman126 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档