oracle-视图(view)

1、视图的定义sql

视图也称为虚表,视图自己不占用物理存储空间,视图存放于数据字典中,简单的来讲视图能够看作是sql语句的集合。视图从数据库中的表产生,这些表称为视图的基表,一个视图能够从另外一个视图中产生。数据库

视图看上去很是象数据库的物理表,对它的操做同任何其它的表同样。当经过视图修改数据时,其实是在改变基表中的数据;相反地,基表数据的改变也会自动反映在由基表产生的视图中。因为逻辑上的缘由,有些Oracle视图能够修改对应的基表,有些则不能(仅仅能查询)。安全

tips:对视图的查询没有限制,对视图的插入、删除、更新通常会有限制,因此为防止经过视图来修改基表的数据能够将视图建立为只读(带with read only)oracle

2、视图的做用spa

  1)提供各类数据表现形式, 可使用各类不一样的方式将基表的数据展示在用户面前, 以便符合用户的使用习惯(主要手段: 使用别orm

名);ip

  2)隐藏数据的逻辑复杂性并简化查询语句, 多表查询语句通常是比较复杂的, 并且用户须要了解表之间的关系, 不然容易写错; 若是it

  基于这样的查询语句建立一个视图, 用户就能够直接对这个视图进行"简单查询"而得到结果. 这样就隐藏了数据的复杂性并简化了查询语句.form

  这也是oracle提供各类"数据字典视图"的缘由之一,all_constraints就是一个含有2个子查询并链接了9个表的视图(在catalog.sql中定义);test

  3)执行某些必须使用视图的查询. 某些查询必须借助视图的帮助才能完成. 好比, 有些查询须要链接一个分组统计后的表和另外一

  表, 这时就能够先基于分组统计的结果建立一个视图, 而后在查询中链接这个视图和另外一个表就能够了;

  4)提供某些安全性保证. 视图提供了一种能够控制的方式, 便可以让不一样的用户看见不一样的列, 而不容许访问那些敏感的列, 这样就可

以保证敏感数据不被用户看见;

  5)简化用户权限的管理. 能够将视图的权限授予用户, 而没必要将基表中某些列的权限授予用户, 这样就简化了用户权限的定义。

  3、视图建立

  SQL> create view vw_emp as select empno,ename,job,hiredate,deptno from emp;

 

 

  SQL> select * from vw_emp where deptno=10;

    MPNO ENAME JOB HIREDATE DEPTNO

----------     ---------- --------- ---------

    7782  CLARK  MANAGER   09-JUN-81  10

    7839  KING   PRESIDENT   17-NOV-81  10

    7934  MILLER  CLERK     23-JAN-82  10

  对简单视图进行DML操做:

  SQL> insert into vw_emp values(1,'a','aa','05-JUN-88',10);
  SQL> update vw_emp set ename='cc' where ename='KING';
  SQL> delete vw_emp where ename='cc';
  SQL> select * from vw_emp where deptno=10

        EMPNO ENAME      JOB       HIREDATE      DEPTNO
        ---------- ---------- --------- --------- ---------
          7782 CLARK      MANAGER   09-JUN-81         10
          7934 MILLER     CLERK     23-JAN-82         10
             1 a          aa        05-JUN-88         10

  基表也发生了相应的更改:

  SQL> select empno,ename,job,hiredate,deptno from emp where deptno=10;

   建立只读视图:

  SQL> create view vw_emp_readonly as select empno,ename,job,hiredate,deptno from emp with read only;

  删除视图:

  能够删除当前模式中的任何视图;
    若是要删除其余模式中的视图,必须拥有DROP ANY VIEW系统权限;
    视图被删除后,该视图的定义会从词典中被删除,而且在该视图上授予的“权限”也将被删除。视图被删除后,其余引用该视图的视图及存储过程等都会失效。

  drop view vw_test;

  4、查看视图:

  使用数据字典视图  1 dba_views——DBA视图描述数据库中的全部视图  2 all_views——ALL视图描述用户“可访问的”视图  3 user_views——USER视图描述“用户拥有的”视图   4 dba_tab_columns——DBA视图描述数据库中的全部视图的列(或表的列)  5 all_tab_columns——ALL视图描述用户“可访问的”视图的列(或表的列)  6 user_tab_columns——USER视图描述“用户拥有的”视图的列(或表的列)

相关文章
相关标签/搜索