視圖的做用: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; 而後,解析(並優化)合併後的查詢語句,並執行查詢語句;