视图 (view)
--建立视图(用查询语句 select empno,ename,sal from emp建立了一个emp_v1的视图 )
create or replace view emp_v1 as --select语句
select empno,ename,sal from emp;
视图的作用:隐藏数据,增加系统的安全性
视图中是否存放了数据??? 不存放数据,只存放查询
保证了 查询到的数据是和表
中的数据是一致的
select * from emp_v1;
<1>emp_v1先看是否是表
<2>不是表 是否是视图
<3> select * from (select empno,ename,sal from emp);
<4>执行得到结果
能否通过视图去改表中的数据呢???
有条件的可以:
<1>建立视图的select语句必须是简单的select语句
简单:不能是多表的查询
不能有分组函数
<2>建立视图的时候不能带with readonly关键字
create or replace view emp_v2 as --select语句
select empno,ename,sal from emp
with read only;
可以改的情况:
1)create or replace view emp_v1 as --select语句
select empno,ename,sal,comm from emp;
update emp_v1 set comm = 1000
where empno=7934;
select * from emp; --发现数据修改了
2)create or replace view emp_v3
as
select empno,ename,hiredate,sal,deptno
from emp
where deptno = 10;
update emp_v3 set deptno=20 where empno=7782;
select * from emp_V3; --7782的数据没有了