简单学习数据库视图

视图的做用:sql

    视图简单描述就是一条查询的sql语句查询出来的虚拟表,能够对这张虚拟表进行sql增删改查操做,能够对这张表进行权限操做将这张表设置为只读操做,从而达到了对一些机密数据起到保护做用数据库

 

1.建立视图oracle

            create view 视图名称 as select * from 表名  where 条件优化

2.对简单视图进行DML操做spa

            SQL> insert into 视图名称 values(1,'a','aa','05-JUN-88',10);it

            SQL> update 视图名称   set ename='cc' where ename='KING';io

            SQL> delete 视图名称     where ename='cc';原理

            SQL> select * from 视图名称    where deptno=10date

3.建立只读视图select

            create view 视图名称 as select * from 表名  where 条件  with read only;

4.视图相关的表发生改变的时候,视图查询到的数据也相应发生变化

5.建立检查约束视图

             create view 视图名称 as select * from 表名  where 条件  with check option

             在进行视图操做的时候,所建立的视图查询出来的数据不包含条件中则不能操做

            eg:

                Sql>create view 视图名称 as select * from 表名 where deptno=10 with check option;

                SQL> insert into 视图名称 values('2','c','cc','02-JAN-55',10);

                SQL> insert into 视图名称 values('3','d','dd','02-JAN-65',20);

                    insert into vw_emp_check values('3','d','dd','02-JAN-65',20);   

                     ERROR at line 1:

                    ORA-01402: view WITH CHECK OPTION where-clause violation

                建立检查视图:对经过视图进行的增删改操做进行检查,要求增删改操做的数据必须是select查询所能查询到的数据,20不在查询范围内,违反检查约束,因此没法插入;

6.查看视图

            使用数据字典视图
            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视图描述“用户拥有的”视图的列(或表的列) 

7.执行视图的原理实例

        eg:假设视图v_emp的定义语句以下:                 create view v_emp                  as                 select empno,ename,loc from employees emp,departments dept                 where  emp.deptno=dept.deptno and dept.deptno=10;                  当用户执行以下查询语句时:                 select ename from v_emp where empno=9876;                  oracle将把这条SQL语句与视图定义语句“合并”成以下查询语句:                 select ename from employees emp,departments dept                 where emp.deptno=dept.deptno and dept.deptno=10 and empno=9876;                  而后,解析(并优化)合并后的查询语句,并执行查询语句; 

相关文章
相关标签/搜索