已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9章 視圖的使用 重點(diǎn)內(nèi)容: 視圖的定義 創(chuàng)建視圖 更新視圖 刪除視圖 視圖的應(yīng)用,一、視圖定義 視圖是由基于一個或多個表上的一個查詢所定義的虛擬表,它將該查詢的具體標(biāo)準(zhǔn)暫時(shí)保存起來,也就是說,我們存儲一個視圖,只需要存儲它的定義,而不必像實(shí)際的數(shù)據(jù)表那樣需要在數(shù)據(jù)庫中占據(jù)著物理空間,但是視圖的操作方法是和實(shí)際數(shù)據(jù)表的操作方法一樣的。 在ANSI/SQL標(biāo)準(zhǔn)中,視圖只是作為一個被查看的虛擬表,而它的建立基礎(chǔ)即實(shí)際的表則作為基本表。視圖可以將數(shù)據(jù)庫中的數(shù)據(jù)按照用戶的要求,以不同的方式呈現(xiàn)給不同的用戶。由于視圖保存了我們經(jīng)常使用的查詢,這樣用戶如果需要在視圖代表的某個查詢的結(jié)果中重復(fù)使用其中的數(shù)據(jù)就不用多次輸入查詢語句了這么復(fù)雜了,而且不同的用戶看見的數(shù)據(jù)集的表現(xiàn)形式也不同,相當(dāng)?shù)淖杂珊挽`活。,二、視圖的優(yōu)缺點(diǎn) (1)優(yōu)點(diǎn) 簡化查詢:視圖可以基于多個不同的表來建立,它將多個表中抽取得數(shù)據(jù)放在一起,像一個單表一樣操作。 簡化結(jié)構(gòu):無論數(shù)據(jù)在數(shù)據(jù)表中的物理布局如何,視圖都可以使數(shù)據(jù)按照不同用戶的要求任意地將其選擇組合為虛表來呈現(xiàn)給用戶,滿足不同用戶的需求,很好地體現(xiàn)了數(shù)據(jù)庫的“個人化”操作。 安全性:通過視圖來訪問數(shù)據(jù)庫中的數(shù)據(jù),可以限制用戶對數(shù)據(jù)庫內(nèi)容的訪問范圍,讓用戶只能訪問視圖的創(chuàng)建者想讓他們看到的具體數(shù)據(jù)。 數(shù)據(jù)完整性:在用戶通過視圖訪問或者更新數(shù)據(jù)時(shí),數(shù)據(jù)庫管理系統(tǒng)DBMS的相關(guān)部分會自動地檢查數(shù)據(jù),確保預(yù)先設(shè)定的完整性約束。 (2)缺點(diǎn) 性能不高:雖然對用戶來說,利用視圖訪問數(shù)據(jù)的方法和表相同,但是,數(shù)據(jù)庫管理系統(tǒng)DBMS處理用戶對視圖的查詢時(shí),必須要先將其轉(zhuǎn)換為對底層源表的查詢。 數(shù)據(jù)更新受限,三、 創(chuàng)建視圖 創(chuàng)建視圖使用命令CREATE VIEW。,CREATE VIEW view_name(column_name, column_name.) AS SELECT_STATEMENT,上面的語句為視圖指定了一個名稱,并且指明了定義視圖的查詢語句。當(dāng)然要成功創(chuàng)建視圖,還必須得到對所有源表的訪問權(quán)限。 在定義視圖的SELECT語句中,我們可以簡單地選擇指定源表中的行和列,還可以使用下面的對象和這些對象的組合來創(chuàng)建視圖:單個表,多個表,另一個視圖,其他多個視圖,視圖和表的組合。,三、創(chuàng)建視圖 1、創(chuàng)建列的別名 創(chuàng)建視圖時(shí),如果用戶沒有特別指定視圖中的列名,視圖列將繼承SELECT語句中源表的列名。但是如果視圖中的列是通過計(jì)算得出的或者有多個列具有相同的名稱,就必須要給視圖列命名,這個名稱也叫源表中的列的別名。指定的列名清單放在CREATE語句的視圖名稱之后的括號中。,CREATE VIEW Manager(mgr_name, sex, id, dno) AS SELECT name, sex, id, dno FROM Employee e, Department d WHERE e.id = d.mgrid,三、創(chuàng)建視圖 2、單表視圖 如果視圖只有一個源表,那么我們就說這個視圖是單表視圖。單表視圖通常在一個包含有很多行或者很多列的表的基礎(chǔ)上創(chuàng)建使用,通過單表視圖用戶可以對它的源表中最常用的數(shù)據(jù)子集進(jìn)行查詢,而不用去理會那些用不著的數(shù)據(jù)行和列,使操作對象看起來更加簡潔好用。 如果一個表中的數(shù)據(jù)只有特定的行和列允許用戶使用的話,在這個表上建立單表視圖也可以保證數(shù)據(jù)庫的安全性。賦予用戶對視圖的訪問權(quán),而不允許他們訪問表可以很好地防止用戶越權(quán)訪問。,CREATE VIEW Worker(name, sex, id) AS SELECT name, sex, id FROM Employee WHERE SUBSTR(TO_CHAR(id), 2, 3) != 001,三、創(chuàng)建視圖 3、使用連接的視圖 視圖可以在單表上建立,也可以在多個表的基礎(chǔ)上創(chuàng)建。使用在多個表上創(chuàng)建的視圖,用戶就不必考慮自己使用的數(shù)據(jù)來自于哪個數(shù)據(jù)表或者需要在那個表中查找自己需要的數(shù)據(jù)。需要做的就是,在視圖中使用這些數(shù)據(jù),就好像它們一直就存儲在同一個表上一樣。下面我們介紹使用連接的視圖。要創(chuàng)建一個使用連接的視圖,只需使用多表連接查詢來定義。,CREATE VIEW Mgr_Dep(No, department, Manager, mgrid) AS SELECT d.dnumber, d.dname, , e.id FROM Department d, Employee e WHERE d.mgrid = e.id,三、創(chuàng)建視圖 4、使用連接的視圖 用戶可以使用包含了子查詢的查詢語句來定義一個視圖。這些子查詢的使用方法和它們在常規(guī)的SELECT語句中的使用一樣,在本書第8章中詳細(xì)討論了子查詢的使用,讀者可以參考。下面我們舉幾個簡單的例子來說明子查詢在視圖創(chuàng)建中的運(yùn)用。,CREATE VIEW Worker(name, sex, id) AS SELECT name, sex, id FROM Employee WHERE SUBSTR(TO_CHAR(id), 2, 3) != 001,CREATE VIEW Worker(name, sex, id) AS SELECT name, sex, id FROM Employee WHERE name NOT IN SELECT name FROM Manager,CREATE VIEW Up_Dep_Worker AS SELECT name, sex, id, salary FROM Employee WHERE dno IN (SELECT dno FROM Employee GROUP BY dno HAVING AVG(salary) 4000),四、更新視圖 視圖可更新性的最基本的規(guī)則:視圖中的每一行數(shù)據(jù)都必須映射到視圖使用的基本表的單獨(dú)一個記錄行上。 下面列出了ANSI標(biāo)準(zhǔn)所不允許進(jìn)行更新操作的幾種常見的會破壞這個基本規(guī)則的視圖創(chuàng)建和操作方式: (1)視圖的列中沒有包括源表中有NOT NULL定義的表列 (2)在定義視圖的查詢語句SELECT后的選擇清單中使用了數(shù)學(xué)表達(dá)式來定義視圖列 (3)在定義視圖的查詢語句SELECT后的選擇清單中使用了函數(shù)調(diào)用或是聚集函數(shù)來定義視圖列 (4)在視圖創(chuàng)建中對GROUP BY和HAVING的使用 (5)在視圖創(chuàng)建的選擇清單中使用了DISTINCT運(yùn)算符 (6)在創(chuàng)建視圖的查詢語句中的任意位置引用了不可更新視圖 (7)在創(chuàng)建視圖的查詢語句中使用了子查詢或者大部分類型的連接,五、刪除視圖 刪除視圖的操作很簡單,使用DROP VIEW命令來完成這個操作。,DROP VIEW view_name,六、視圖的應(yīng)用 1、簡化復(fù)雜的查詢 如果我們在對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行某種操作時(shí),需要執(zhí)行一系列的查詢語句,會發(fā)現(xiàn)這么做是很復(fù)雜的,這種情況下,我們可以使用合適的視圖來簡化查詢。 2、從多個數(shù)據(jù)源匯總數(shù)據(jù) 如果在創(chuàng)建視圖的查詢語句中直接連接多個數(shù)據(jù)源表,或通過其它的視圖來間接連接多個數(shù)據(jù)源表,我們就可以利用該視圖來匯總這些源表上的數(shù)據(jù)。使用這種方法,可以簡化我們很多針對這些數(shù)據(jù)表的查詢。,六、視圖的應(yīng)用 3、單位轉(zhuǎn)換 有時(shí)候,我們將數(shù)據(jù)庫中的數(shù)據(jù)提供給用戶時(shí),需要對數(shù)據(jù)進(jìn)行一些單位轉(zhuǎn)換,以適應(yīng)不同用戶對數(shù)據(jù)單位的不同要求。 4、保障安全性 數(shù)據(jù)庫系統(tǒng)的用戶可以分為好幾類,每類用戶都有一組在數(shù)據(jù)庫系統(tǒng)各個元素上的權(quán)限。其中,數(shù)據(jù)庫管理員DBA可以擁有所有的權(quán)限。如果一個用戶可以隨意訪問不在他權(quán)限范圍內(nèi)的數(shù)據(jù)內(nèi)容,將給數(shù)據(jù)庫的管理帶來很大的安全隱患。數(shù)據(jù)庫管理系統(tǒng)中有專門負(fù)責(zé)安全性管理的部分,它依據(jù)不同用戶在數(shù)據(jù)庫各元素上所擁有的權(quán)限來允許或禁止用戶對這些元素的訪問。使用視圖可以很好地
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版私人二手房購房定金支付與房產(chǎn)交易糾紛解決合同2篇
- 冠狀動脈瘤樣擴(kuò)張患者的臨床特點(diǎn)及相關(guān)危險(xiǎn)因素分析
- 二零二五年度個人住房貸款合同編制細(xì)則2篇
- 2025版物業(yè)租賃安全生產(chǎn)安全責(zé)任保險(xiǎn)理賠服務(wù)合同3篇
- 提升財(cái)務(wù)運(yùn)營效益的探索與實(shí)踐
- 應(yīng)急指揮系統(tǒng)的建設(shè)與完善
- 民族醫(yī)科護(hù)士工作總結(jié)
- 二零二五年度行政單位內(nèi)部職員服務(wù)合同范本3篇
- 美食行業(yè)烹飪技巧培訓(xùn)回顧
- 塑料行業(yè)塑料工工作總結(jié)
- 2023-2024學(xué)年西安市高二數(shù)學(xué)第一學(xué)期期末考試卷附答案解析
- 【京東倉庫出庫作業(yè)優(yōu)化設(shè)計(jì)13000字(論文)】
- 監(jiān)獄監(jiān)舍門方案
- 煤礦安全生產(chǎn)方針及法律法規(guī)課件
- 宮頸癌后裝治療護(hù)理查房課件
- 員工內(nèi)部眾籌方案
- 復(fù)變函數(shù)與積分變換期末考試試卷及答案
- 初中班級成績分析課件
- 勞務(wù)合同樣本下載
- 聰明格練習(xí)題(初、中級)
- 小批量試制總結(jié)報(bào)告
評論
0/150
提交評論