视图其实是一张虚表,是基于已存在的基表创建,可以将视图理解为存储起来的 SELECT 语句。
视图的作用:
1、控制数据的访问
2、简化查询
3、避免访问重复数据
赋权
首先要有创建视图的权限,没有权限的可以切换到sys或者system账号,赋权以后再创建,我将sql语句放在下面:
--切换登陆用户
conn system/密码;
--赋权,我这里将创建视图的权限赋给scott账户
grant create view to scott
创建视图
--v_name:视图名
create[or replace] [FORCE|NOFORCE] view v_name
as
select语句
[with read only]只读
其中的or replace是如果有视图已经存在,则替换视图。
Force和noforce是决定是否强制创建视图,force是在基表不存在时也可以创建视图的标志,noforce指如果基表不存在,则不能创建视图。Noforce是默认选项。
在存储过程和函数中is和as没什么区别,但是创建视图是用as,as后面就是接select语句
如果创建视图的时候后面加了with read only,那么就无法对这个视图进行DML操作,也就是增删改操作
使用
简单视图可以进行增删改查操作,会影响到基表。
复杂视图的操作规则如下:
一、当视图定义中包含以下元素之一时不能使用delete:
1、组函数(聚合函数)
2、GROUP BY 子句
3、DISTINCT 关键字
4、ROWNUM 伪列
二、当视图定义中包含以下元素之一时不能使用update:
1、组函数(聚合函数)
2、GROUP BY 子句
3、DISTINCT 关键字
4、ROWNUM 伪列
5、列的定义为表达式
三、当视图定义中包含以下元素之一时不能使insert:
1、组函数(聚合函数)
2、GROUP BY 子句
3、DISTINCT 关键字
4、ROWNUM 伪列
5、列的定义为表达式
6、表中非空的列在视图定义中未包括
另外还有一种视图:物化视图。有兴趣的小伙伴可以自行百度学习。