數(shù)據(jù)庫對象—視圖: 一、視圖的定義:從表中抽出的邏輯上相關(guān)的數(shù)據(jù)集合 a) 視圖是一種虛表 b) 視圖建立在已有表
數(shù)據(jù)庫對象—視圖:
一、視圖的定義:從表中抽出的邏輯上相關(guān)的數(shù)據(jù)集合
a) 視圖是一種虛表
b) 視圖建立在已有表基礎(chǔ)上,視圖依賴已建立的這些表稱為基表
c) 向視圖提供數(shù)據(jù)內(nèi)容的語句為SELECT語句,,可以將視圖理解為存儲(chǔ)起來的SElECT語句
d) 視圖向用戶提供基表數(shù)據(jù)的另一種表示形式
二、為什么要使用視圖
a) 控制數(shù)據(jù)訪問:提供了一種安全機(jī)制,通過視圖顯示數(shù)據(jù)時(shí),屏蔽用戶不應(yīng)該知道的數(shù)據(jù).
b) 簡化查詢:select語句構(gòu)造了一個(gè)復(fù)雜的查詢語句,每次使用必須都得調(diào)用它
c) 避免重復(fù)訪問相同的數(shù)據(jù)
三、創(chuàng)建視圖:
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) 子查詢可以是復(fù)雜的SELECT語句
i. CREATE VIEW empvu
AS select employee_id,last_name,salary
FROM employees
WHERE department_ed=80;
c) 描述視圖結(jié)構(gòu):
i. Describe empvu;
d) 創(chuàng)建視圖時(shí)在子查詢中給列定義別名
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) 創(chuàng)建帶有函數(shù),groupby子句視圖
i. SQL> create or replace view gde as ( select deptno,count(*) cou from emp group by deptno);
g) 創(chuàng)建連接視圖 帶有函數(shù) 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的規(guī)定
a) 可以在簡單視圖中執(zhí)行DML操作
b) 當(dāng)時(shí)圖定義中包含以下元素之一是不能使用delete:
i. 組函數(shù)
ii. GROUP BY 子句
iii. DISTINCT 關(guān)鍵字
iv. ROWNUM 偽列
c) 當(dāng)視圖定義中包含以下元素之一時(shí)不能使用update :
i. 組函數(shù)
ii. GROUP BY子句
iii. DISTINCT 關(guān)鍵字
iv. ROWNUM 偽列
v. 列的定義為表達(dá)式
d) 可以使用 WITH READ ONLY 選項(xiàng)屏蔽對視圖的DML 操作
d)任何 DML 操作都會(huì)返回一個(gè)Oracle server 錯(cuò)誤
五、 刪除視圖
a) Drop view 視圖名;
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com