Oarcle之视图

视图

什么是视图?

(在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。

注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。 ——括号内容来源于百度网络)

 

============================================================================================================================================

 

登录到sys账户给Scott赋予创建视图的权限

grant createview to scott;

视图的创建

create  view v_emp_dept

as

select ename ,sal,job,dname,from emp,dept where emp.deptno = dept.deptno ;

视图也可以从视图产生

create view v_emp_dept_tem

as

select ename,sal  from v_emp_dept

修改视图的数据,就是修改基表的数据

create or replace view v_emp

as

select empno,ename  from  emp 

with  read  only

 

视图的优点:1可以使某些重复出现的SQL语句变得更为简单

视图的缺点:1如果修改基表的结构,视图失效

      2增加数据库的维护成本

      3视图会被覆盖掉

      一般情况下,不要对视图进行DML操作(DML请参考‘2019年4月25日Oarcle之用户管理 与 DCL’)

 

视图的例子

 

select dname, grade

  from (select deptno, avg_sal, grade

    from (select deptno, avg(sal) avg_sal from emp group by deptno) t,

      salgrade s

    where t.avg_sal between s.losal and s.hisal) t1,

     dept

 where t1.deptno = dept.deptno

  and t1.grade =

    (select min(grade)

      from (select deptno, avg_sal, grade

          from (select deptno, avg(sal) avg_sal

              from emp

             group by deptno) t,

            salgrade s

           where t.avg_sal between s.losal and s.hisal));

 

 

为上面的SQL中重复出现的SQL语句创建视图

create view  v_dept_avgsal

as

select  deptno,avg_sal,grade

       from  (select  deptno, avg(sal)  avg_sal   from  emp  group  by deptno) t,

        salgrade s

      where  t.avg_sal  between  s.losal  and  s.hisal  

 

 

利用视图替换上面的sql语句

select dname, grade

      from v$_dept_avgsal t1,

    dept

  where t1.deptno = dept.deptno

  and t1.grade =

    (select min(grade)

      from v$_dept_avgsal);

 

删除视图所表示的基表

  create view v$_aaa

  as

  select * from aaa;

删除表 aaa

  drop table aaa;

 

查询视图

  select * from v$_aaa;

 

删除视图 :v$_aaa

  drop view v$_aaa;

posted @ 2019-04-29 21:00  为什么名字都被注册了  阅读(196)  评论(0编辑  收藏  举报