视图--查询语句的别名
一、作用:
1.隐藏数据来源,保证数据的安全;
2.简化SQL语句的书写;
3.只显示需要的信息;
二、分类:
1、简单视图:数据只来源于一张表,可以做DML操作;
2、复杂视图:视图当中的数据可以来源于多张表,只能做简单查询,不能做DML;
3、物化视图:优化当中的东西;
#除了物化视图,视图不占用空间,数据来源于基表;
三、创建视图的语法:
create [or replace ]|[force ] view <> as select ...[with checkoption |with read only];
# or replace 如果试图存在就去替换
# force 基表不存在,我们只能用强制的方式创建视图
#with checkoption 给试图约束条件
四、创建视图:
>>>create or replace view v1 as select ename,empno,sal,deptno from emp where deptno=10;
>>>select * from v1;//查看我们创建好的视图
>>>create or replace view v1 as select ename,empno,sal,deptno from emp where deptno=&deptno ;//用&给一个变量
>>>
>>>update v1 set sal=sal+1;//修改我们的视图
>>>create or replace view v2 as select ename,empno,sal,deptno from emp where deptno=10 with checkoption;// 只能对我们的v2中的deptno中的10 进行修改
>>>create or replace view v2 as select ename,empno,sal,deptno from emp where deptno=10 with readonly; //只读试图
>>>create or replace force view v2 as select * from aa;//基表不存在,创建能成功,但是有警告
>>>create or replace view v3 as select ename,empno,max(sal),deptno from emp group by deptno; //使用了分组函数或group by 我们就不能使用DML操作
>>>create or replace view v4 as select distinct deptno from emp; //去掉重复的行 ,也不能使用DML操作
>>>create or replace view v4 as select ename,sal,(sal+nvl(comm,0))*12 ysal from emp;//做了算数表达式,也不能使用DML 操作
>>> create or replace view v1 as select ename,empno,sal,deptno from emp natural join dept join salgrade on sal between hisal and losal ;// 复杂视图只能创建,不能修改
desc user_views //当前用户下有哪些视图,创建试图的语句。
五、删除视图
drop view<>;
#语法中有or replace 的语句我们都可以进行修改,视图不可以进行修改;