簡單學習數據庫視圖

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

相關文章
相關標籤/搜索