什么是视图?
####怎么理解视图是一张虚表?
1、首先视图是一张表,那么针对表的一系列操作都可以用来操作视图。(注意:不建议通过视图对表做修改操作);
2、其次视图是一张虚表,视图中是没有数据的,视图中数据来源于创建视图时的表。
####视图的作用?
视图一般用来简化复杂查询,不建议通过视图对表做修改操作。
创建视图
管理员授权
# 普通用户没有创建视图的权限,需要管理员授权
grand create view to scott;
# 创建视图
SQL> create or replace view empinfoview
2 as
3 select e.empno,e.ename,e.sal,e.sal*12 annsal,d.dname
4 from emp e, dept d
5 where e.deptno=d.deptno;
创建视图的语法:
create [or replace] [force|noforce] view viewName
[(alias[,alias]...)]
as subquery
[with check option [constraint constraint]]
[with read only [constraint constraint]];
#force: 子查询不一定存在
#notforce: 子查询存在(默认)
#with read only:只能做查询操作
修改视图
视图只能创建、删除、替换。修改视图只能用replace替换
replace view viewName...
...
...
删除视图
drop view viewName
视图的一些规定
使用DML的规定
简单视图中可以执行DML操作
视图定义中包含以下元素之一,不能使用delete
- 组函数
- group by 字句
- distinct 关键字
- rowunm 伪列
视图定义中包含以下元素之一,不能使用update
- 组函数
- group by 字句
- distinct 关键字
- rowunm 伪列
- 列的定义为表达式
视图定义中包含以下元素之一,不能使用insert
- 组函数
- group by 字句
- distinct 关键字
- rowunm 伪列
- 列的定义为表达式
- 表中非空的列在视图定义中为包括
屏蔽DML操作
可以使用 with read only 选项来屏蔽对视图的DML操作。