Oracle中常見的數據庫對象--視圖

視圖

數據庫對象—視圖:

一、視圖的定義:從表中抽出的邏輯上相關的數據集合

a)         視圖是一種虛表

b)         視圖建立在已有表基礎上,視圖依賴已建立的這些表稱爲基表

c)         向視圖提供數據內容的語句爲SELECT語句,可以將視圖理解爲存儲起來的SElECT語句

d)         視圖向用戶提供基表數據的另一種表示形式

二、爲什麼要使用視圖

a)         控制數據訪問:提供了一種安全機制,通過視圖顯示數據時,屏蔽用戶不應該知道的數據.

b)        簡化查詢:select語句構造了一個複雜的查詢語句,每次使用必須都得調用它

c)         避免重複訪問相同的數據

三、創建視圖:

a)         在CREATE VIEW語句中嵌入子查詢

                                       i.              Create [OR REPLACE] [FORCE | NOFORCE] VIEW view [(alias  [,alias]…)]

                   AS subquerytion

                   [with check option [CONSTRAINT constraint ]]

                   [with read only [CONSTRAINT constraint]]

b)         子查詢可以是複雜的SELECT語句

                                       i.              CREATE VIEW empvu

                   AS   select employee_id,last_name,salary

                            FROM employees

                            WHERE    department_ed=80;

c)         描述視圖結構:

                                       i.              Describe empvu;

d)         創建視圖時在子查詢中給列定義別名

               i.      SQL> create view usersview as select username name,password pass from users;

              ii.      //查詢視圖

SQL> select * from usersview;

e)         使用CREATE OR REPLACE VIEW 子句修改視圖

               i.      SQL> create or replace view usersview as(select * from users);

f)    創建帶有函數,groupby子句視圖

               i.      SQL> create or replace view gde as ( select deptno,count(*) cou from emp group by deptno);

g)    創建連接視圖 帶有函數 group by子句 order by 子句

               i.      SQL> create view gdeo as select e.deptno,count(*) cou from emp e inner join dept d on e.deptno=d.deptno group by e.deptno order by e.deptno;

四、 視圖中使用DML的規定

a)    可以在簡單視圖中執行DML操作

b)    當時圖定義中包含以下元素之一是不能使用delete:

               i.      組函數

              ii.      GROUP BY 子句

            iii.      DISTINCT 關鍵字

              iv.      ROWNUM 僞列

c)    當視圖定義中包含以下元素之一時不能使用update :

               i.      組函數

              ii.      GROUP BY子句

            iii.      DISTINCT 關鍵字

              iv.      ROWNUM 僞列

               v.      列的定義爲表達式

d)    可以使用 WITH READ ONLY 選項屏蔽對視圖的DML 操作

d)任何 DML 操作都會返回一個Oracle server 錯誤

五、 刪除視圖

a)    Drop view 視圖名;

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章