一.
视图的特点
1.
集中用户感兴趣的数据.
通常用户只是对表中的某一部分数据感兴趣,
对其他的数据不是那么敏感,
所以用户通过视图就可以操
纵自己所需的数据.
对于开发人员来说,
也可以屏蔽一些数据.
2.
掩码数据库的复杂性.
通过视图机制将数据库设计的复杂性与用户屏蔽分开,
这样用户通过视图的操作就可以达到简化对数据库的复杂操作.
3.
简化用户的权限.
由于视图只是基表的逻辑表,
所以通过视图可以将视图的权限和基表权限分离.
4.
重组数据.
视图可以来自多个基表,
从而可以利用视图对数据进行进一步地分析.
二.
视图可以由以下任意一项组成:
1.
一个基表的任意子集
2.
两个或两个以上的基表的合集
3.
两个或两个以上基表的交集
4.
一个或者多个基表运算的结果集合
5.
另一个视图的子集.
三.
创建视图的基本语法:
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
语法,包括连接
/
分组查询和子查询;
2.
在没有
WITH CHECK OPTION
和
READ
ONLY
的情况下,查询中不能使用
ORDER BY
子句;
3.
如果没有为
CHECK OPTION
约束命名,系统会自动为之命名,形式为
SYS_Cn;
4.OR REPLACE
选项可以不删除原视图便可更改其定义并重建,或重新授予对象
权限。
四.
视图操作操作:
视图分为简单视图(
基于单个基表,
且不包含函数和数据分组操作
)
和复杂视图(
基于多个基表或视图).
简单视图可以通过视图修改数据.
这些修改包括插入数据.
更新数据和删除数据.
但是对于复杂视图来说,
通过视图修改数据必须满足一定的规则.
在视图定义中没有设定READ ONLY
的前提下,
如果视图包含了下面的内容,
那么不能通过视图删除表中的数据:
*
分组函数,
如SUM,AVG,MIN,MAX
等
*GROUP BY
子句
*
包含了表达式
*ROWNUM
伪列
插入数据时,
除了满足上面的条件外,
还需要保证那些没有包含在视图定义中的基表的列必须允许空值.
如果在视图定义中还包含了WITH CHECK OPTION
子句,
那么对视图的修改除了前面的那些原则外,
还必须满足指定的约束条件.
个人认为,视图利于查询,不利于修改.
1.
查询视图:
可依赖于多个基表.
SELECT *FROM view_name; /*
类似于查询表数据*/
2.
更新视图的前提:
没有使用连接函数,
集合运算和组函数.
创建视图的select
语句中没有集合函数且没有GROUP BY,ONNECT BY ,START WITH
子句及DISTINCT
关键字.
创建视图的SELECT
语句中不包含从基表列通过计算所得的列.
创建视图没有包含只读属性.
3.
插入数据
INSERT INTO view_name VALUES();
4.
修改数据:
UPDATE view_name SET …
若一个视图依赖于多个基本表,
则一次修改该视图只能修改一个基本表的数据.
5.
删除数据:
Delete from view_name where …
同样,
当视图依赖多个基表时,
不能使用此语句来删除基表中的数据.
只能删除依赖一个基表的数据.
6.
修改视图定义:
修改视图的好处在于,
所有相关的权限都依然存在.
语法同创建视图相同.
7.
删除视图:
DROP VIEW view_name;
只有视图所有者和具备DROP VIEW
权限的用户可以删除视图。
删除视图的定义不影响基表中的数据。
视图被删除后,基于被删除视图的其他视图或应用将无效。
分享到:
- 2008-11-08 04:17
- 浏览 2218
- 评论(1)
- 论坛回复 / 浏览 (1 / 7013)
- 查看更多
相关推荐
自己总结的数据库oracle视图用法自己总结的数据库oracle视图用法
oracle 视图创建和操作,创建简单,复杂的视图,创建基表不存在的视图,视图增删改,查看视图的结构
Oracle 视图详解,详细阐述了视图的信息,免费分享
日常管理维护一个oracle数据库服务器的时,经常会碰到修改view,table结构的情况,而且由于oracle view,函数,存储过程等对象的相互关联的关系,经常会由于一个view,table,fun,proc的修改而导致相关的对象失效。...
讲述oracle中视图的用法。视图定义、视图作用、视图语法、视图操作等等。
oracle实现带参数视图,里面有例子,很好的一个东西。
常用oracle视图 V$SESSION 在本视图中,每一个连接到数据库实例中的session都拥有一条记录。包括用户session及后台进程如DBWR,LGWR,arcchiver等等。 V$SESSION中的常用列 V$SESSION是基础信息视图,用于找寻...
总结: 可传参视图主要是利用oracle存储过程来作为参数传递的介质,相当于定义了一个全局变量,在查询的时候设置参数,在视图中获取参数。
因Oracle暂不支持对视图(View)的加密,在实际工作中有时需提供给第三方只读账户,为保护知识产权,可用文中所述方法防止第三方账户查看视图(View)中的SQL代码。
用C# 实现将 oracle数据库的视图从一个数据库迁移到另一个数据库。
Oracle_View视图创建在oracle数据库中已建立两张表rt_issuesect和roadstate,表结构如下: 高架状态表结构rt_issuesect
oracle视图的增删改查操作举例[参考].pdf
Oracle 表字段或是视图字段添加备注方法 Oracle 是一个强大的关系数据库管理系统,提供了多种方式来添加备注信息到表字段或视图字段中。在本节中,我们将详细介绍如何使用 Oracle 的 Comment 机制来添加备注信息到...
通过MSQL通过视图访问ORACLE中的表和视图。
ORACLE视图技术在用户数据管理中的应用分析.pdf
NULL 博文链接:https://vernonchen163.iteye.com/blog/1963366
17oracle的视图 PPT 17oracle的视图 PPT
Oracle 视图讲解,比较详细的阐述了视图的创建,使用查询等,免费分享给大家
NULL 博文链接:https://xurichusheng.iteye.com/blog/1340473
介绍oracle所有动态视图和数据字典的帮助手册