视图

来源:互联网 发布:mac如何卸载opera 编辑:程序博客网 时间:2024/05/22 11:48

一.     视图的定义

视图(view),也称虚表, 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的。视图只有逻辑定义。每次使用的时候, 只是重新执行SQL.

 

二.    视图分类

1.  简单视图   基于单个基表,且不包含函数和数据分组操作 

select ename,job,sal from emp where job='CLERK';

 

create view v1 as select ename,job,sal from emp where job='CLERK';

create or replace view v2 as select * from emp where deptno=10 withread only;  ====>只读视图

 

2.  复杂视图基于多个基表或视图

 

3.  物化视图

 

三.语法

CREATE[OR REPLACE][FORCE][NOFORCE]VIEW view_name

[(column_name)[,….n]]

AS

Select_statement

[WITH CHECK OPTION[CONSTRAINT constraint_name]]

[WITH READ ONLY]

 

REPLACE:  如果创建视图时, 已经存在此视图, 则重新创建此视图, 相当于覆盖

FORCE:  强制创建视图, 无论的视图所依赖的基表否存在或是否有权限创建

NOFORCE:  只有基表存在且具有创建视图权限时, 才可以创建视图

WITH CHECKOPTION  指出在视图上所进行的修改都要符合select_statement 所指定的限制条件

WITH READONLY  只允许查看视图

 

三.基本操作

1.查询视图: 可依赖于多个基表.

SELECT *FROM view_name; /* 类似于查询表数据*/

        

 

2. 插入数据

INSERT  INTO  view_name VALUES();

 

3. 修改数据:

UPDATE  view_nameSET …

 

4. 删除数据:

Delete from view_name where …

同样, 当视图依赖多个基表时, 不能使用此语句来删除基表中的数据. 只能删除依赖一个基表的数据.

5. 删除视图:

DROP VIEW view_name;

四.视图操作

在视图定义中没有设定READ ONLY 的前提下, 如果视图包含了下面的内容, 那么不能通过视图删除表中的数据:

* 分组函数, 如SUM,AVG,MIN,MAX 等

*   GROUP BY 子句

* 包含了表达式

*  ROWNUM 伪列

 

selectowner,view_name from dba_views where owner='用户名'; è查看这个用户的视图

descdba_views 查看视图的结构

 

 

0 0
原创粉丝点击