第一篇:視圖的定義及優(yōu)點(diǎn)
1、視圖的定義及優(yōu)點(diǎn)
定義:是從一個(gè)或者幾個(gè)基本表導(dǎo)出的表,是用戶可以從一個(gè)特定的角度來(lái)查看數(shù)據(jù)庫(kù)中的數(shù)據(jù),它與基本表不同,是一個(gè)虛表,即視圖鎖對(duì)應(yīng)的數(shù)據(jù)不進(jìn)行實(shí)際存儲(chǔ)。
優(yōu)點(diǎn): 視圖能夠集中數(shù)據(jù),簡(jiǎn)化用戶的數(shù)據(jù)查詢和處理。視圖便于用戶共享數(shù)據(jù)。視圖提高了數(shù)據(jù)的邏輯獨(dú)立性。視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)。
2、三級(jí)模式二級(jí)映像的功能
通過(guò)三級(jí)模式提供的耳機(jī)映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。
3、數(shù)據(jù)模型的三要素:
數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操作,完整性約束條件
4、數(shù)據(jù)庫(kù)安全性的控制方法
用戶標(biāo)識(shí)和鑒別,用戶存取權(quán)限控制,視圖機(jī)制,審計(jì)方法,數(shù)據(jù)加密
5、數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)
數(shù)據(jù)結(jié)構(gòu)化,數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充,數(shù)據(jù)獨(dú)立性高,數(shù)據(jù)由DBMS 同意管理和控制
6、基本封鎖類型及含義
排他鎖:若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則只允許T讀取和修改A,其他任何事務(wù)不能對(duì)A加任何類型鎖,知道T釋放A鎖,才能對(duì)A進(jìn)行封鎖和其他讀取操作,從而保證其他事務(wù)在T釋放A上的鎖前不能對(duì)A進(jìn)行讀取和修改。排他鎖實(shí)質(zhì)上是保證事務(wù)對(duì)數(shù)據(jù)的獨(dú)占性,排除其他事務(wù)對(duì)其知性過(guò)程的干擾
共享鎖:事務(wù)T對(duì)某數(shù)據(jù)A建立了共享鎖,則此時(shí)事務(wù)T都能對(duì)數(shù)據(jù)A進(jìn)行讀操作,但不能進(jìn)行修改和其他操作,而其他事務(wù)只能對(duì)數(shù)據(jù)A加S鎖不能加X(jué)鎖,即其他事務(wù)只能對(duì)數(shù)據(jù)A進(jìn)行讀操作。共享鎖實(shí)質(zhì)上是保證多個(gè)事務(wù)可以同時(shí)讀A,在A上的共享鎖被釋放前。都不能寫A7、兩段鎖協(xié)議的概念
兩段鎖協(xié)議就是在對(duì)任何數(shù)據(jù)進(jìn)行讀寫之前,事務(wù)首先要獲得對(duì)該數(shù)據(jù)的封鎖,在釋放一個(gè)封鎖之后,事務(wù)不再獲得任何其他封鎖,即一個(gè)事務(wù)被分為兩個(gè)階段
擴(kuò)展階段:事務(wù)可以申請(qǐng)封鎖,但是不能接觸任何已獲得的封鎖
收縮階段:事務(wù)可以釋放封鎖,但是不能申請(qǐng)新的封鎖
8、數(shù)據(jù)庫(kù)設(shè)計(jì)的步驟,任務(wù)
1應(yīng)用規(guī)劃進(jìn)行系統(tǒng)的必要性和可行性分析2 需求分析收集分析信息3 概念設(shè)計(jì)形成獨(dú)立于具體DBMS的概念模型4 邏輯設(shè)計(jì)將概念結(jié)構(gòu)轉(zhuǎn)化成某個(gè)DBMS所支持的數(shù)據(jù)模型,并對(duì)其進(jìn)行優(yōu)化5 物理設(shè)計(jì)為邏輯數(shù)據(jù)模型選取一個(gè)最適合的應(yīng)用環(huán)境的物理結(jié)構(gòu) 6 數(shù)據(jù)庫(kù)實(shí)施:建立實(shí)際數(shù)據(jù)庫(kù)結(jié)構(gòu) 裝入實(shí)驗(yàn)數(shù)據(jù)對(duì)應(yīng)用程序進(jìn)行調(diào)試 轉(zhuǎn)入實(shí)際數(shù)據(jù)7運(yùn)行維護(hù):維護(hù)數(shù)據(jù)庫(kù)的安全性和完整性檢測(cè)并改善書(shū)庫(kù)庫(kù)運(yùn)行性能 根據(jù)用戶要求對(duì)數(shù)據(jù)庫(kù)現(xiàn)有功能運(yùn)行擴(kuò)充 集市改正運(yùn)行中發(fā)現(xiàn)的系統(tǒng)錯(cuò)誤
9、關(guān)系模型的三類完整性規(guī)則
實(shí)體完整性:若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。
參照完整性:若屬性F是基本關(guān)系R的外鍵,它與基本關(guān)系S的主鍵為Ks,相對(duì)應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對(duì)于R中的每個(gè)元素在F的值必須為a或取空值b或等于S中某個(gè)元組的主碼值
用戶定義完整性:限定屬性的取值范圍,即對(duì)值域的約束,所以在用戶定義完整性中最常見(jiàn)的是域完整性約束
10、層次模式和網(wǎng)狀模型的優(yōu)缺點(diǎn)
層次模型優(yōu)點(diǎn):查詢效率高,結(jié)構(gòu)簡(jiǎn)單,層次分明,便于在計(jì)算機(jī)內(nèi)實(shí)現(xiàn)的優(yōu)點(diǎn)
缺點(diǎn):現(xiàn)實(shí)世界中很多聯(lián)系是非層次的,其不能直接表示兩個(gè)以上實(shí)體型間的復(fù)雜的聯(lián)系和度偶i多聯(lián)系,只能通過(guò)冗余數(shù)據(jù)或創(chuàng)建虛擬節(jié)點(diǎn)的方法來(lái)結(jié)局,易產(chǎn)生不一致性,對(duì)數(shù)據(jù)的插入刪除操作限制較多,查詢子女節(jié)點(diǎn)必須通過(guò)雙親節(jié)點(diǎn),所以使得應(yīng)用程序的編寫比較復(fù)雜
網(wǎng)狀模型的優(yōu)點(diǎn):能夠直接描述現(xiàn)實(shí)世界,查詢方便,結(jié)構(gòu)對(duì)稱,查詢格式相同,炒作功能強(qiáng),速度快存取效率高
缺點(diǎn):數(shù)據(jù)結(jié)構(gòu)及其對(duì)應(yīng)的數(shù)據(jù)操作語(yǔ)言極其復(fù)雜,數(shù)據(jù)獨(dú)立性差,程序設(shè)計(jì)困難
11、數(shù)據(jù)庫(kù)物理結(jié)構(gòu)的含義及涉及步驟,評(píng)價(jià)指標(biāo)有哪些
含義:為給定的基本數(shù)據(jù)模型選取一個(gè)最適合的應(yīng)用環(huán)境的物理結(jié)構(gòu)的過(guò)程
步驟:確定數(shù)據(jù)庫(kù)物的物理結(jié)構(gòu)評(píng)價(jià)數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)
評(píng)價(jià)指標(biāo):時(shí)間空間 效率
12、數(shù)據(jù)獨(dú)立性的兩個(gè)級(jí)別:
物理數(shù)據(jù)獨(dú)立性 : 概念(或外)模式不會(huì)醉著內(nèi)模式的改變而改變
輯數(shù)據(jù)獨(dú)立性:外模式(或應(yīng)用程序)不會(huì)隨著概念模式的改變而改變
13、SQL的特點(diǎn):
1綜合統(tǒng)一 2高度非過(guò)程化 3面向幾個(gè)的操作方式 4以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式 5語(yǔ)言簡(jiǎn)潔 易學(xué)易用
14、關(guān)系模型和面向?qū)ο髷?shù)據(jù)模型的區(qū)別:
15、安全性控制的方法
用戶表示和鑒別 用戶存取權(quán)限控制 視圖機(jī)制 審計(jì)方法 數(shù)據(jù)加密
16、數(shù)據(jù)庫(kù)的功能
數(shù)據(jù)定義 數(shù)據(jù)操縱數(shù)據(jù)組織,存儲(chǔ)和管理數(shù)據(jù)庫(kù)事務(wù)管理和運(yùn)行管理 數(shù)據(jù)庫(kù)建立和維護(hù)功能
名詞解釋
1、SOL
是引種介于關(guān)系袋鼠和關(guān)系鹽酸之間的結(jié)構(gòu)化非過(guò)程查詢語(yǔ)言,是專用數(shù)據(jù)庫(kù)而建立的指令集,其功能包括數(shù)據(jù)的定義查詢更新和數(shù)據(jù)控制等多個(gè)方面
2、外碼
關(guān)系模式R1中的某一屬性F與關(guān)系模式R2的主鍵相對(duì)應(yīng),但不是R1的超鍵,則稱F是關(guān)系模式R1的外鍵
3、等值連接自然連接
自然連接:市一中特殊的等值連接,要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且要求在結(jié)果中把重復(fù)的屬性去掉。
4、數(shù)據(jù)庫(kù)的安全性
主要是指保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用,以免數(shù)據(jù)的泄漏更改和破壞
5、數(shù)據(jù)庫(kù)的完整性
是指數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性和相容性,防止錯(cuò)誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)造成無(wú)效操作
6、模式外模式內(nèi)模式
模式:也稱邏輯模式或者概念模式,是三級(jí)模式結(jié)構(gòu)中的中間層,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)邏輯結(jié)構(gòu)和特征的描述,描述現(xiàn)實(shí)世界中的實(shí)體及其性質(zhì)與聯(lián)系,是所有用戶的公共數(shù)據(jù)視圖
外模式:是數(shù)據(jù)庫(kù)用戶能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示
內(nèi)模式:存貯記錄的類型,存儲(chǔ)域的表示,存儲(chǔ)記錄的物理順序,指引元,索引和存儲(chǔ)路徑等數(shù)據(jù)的存儲(chǔ)組織
7、二級(jí)三級(jí)封鎖協(xié)議
一級(jí)封鎖協(xié)議:事務(wù)T在修改數(shù)據(jù)前必須先對(duì)其加X(jué)鎖,知道事物結(jié)束才釋放
二級(jí)封鎖協(xié)議:在一級(jí)封鎖協(xié)議中加上事務(wù)T在讀取數(shù)據(jù)之前必須先對(duì)其加上S鎖,讀取后即可釋放S鎖
三級(jí)封鎖協(xié)議:在一級(jí)封鎖協(xié)議中加上事務(wù)T在讀取之前必須先對(duì)其加上S鎖,直到事務(wù)結(jié)束后才能釋放S鎖
8、數(shù)據(jù)流圖 數(shù)據(jù)字典
數(shù)據(jù)流圖:是SA中使用的工具,以圖形的方式描繪數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過(guò)程,描繪信息流和數(shù)據(jù)流和數(shù)據(jù)從輸入移動(dòng)到輸出的過(guò)程中鎖經(jīng)受的變換,由外部實(shí)體,處理過(guò)程。數(shù)據(jù)流。數(shù)據(jù)存儲(chǔ),組成數(shù)據(jù)字典:是關(guān)于數(shù)據(jù)的信息集合,產(chǎn)生于數(shù)據(jù)流圖,是對(duì)數(shù)據(jù)流圖中各個(gè)成分的纖細(xì)描述,是數(shù)據(jù)流圖的補(bǔ)充。由數(shù)據(jù)項(xiàng),數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)流。數(shù)據(jù)存儲(chǔ),處理過(guò)程組成。
9、物理獨(dú)立性邏輯獨(dú)立性
物理數(shù)據(jù)獨(dú)立性 : 概念(或外)模式不會(huì)醉著內(nèi)模式的改變而改變
輯數(shù)據(jù)獨(dú)立性:外模式(或應(yīng)用程序)不會(huì)隨著概念模式的改變而改變
1、簡(jiǎn)述數(shù)據(jù)庫(kù)設(shè)計(jì)的特點(diǎn)
數(shù)據(jù)庫(kù)設(shè)計(jì)是硬件軟件和桿件的結(jié)合數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)該是應(yīng)用系統(tǒng)設(shè)計(jì)相結(jié)合2、一般用戶的需求有哪些方面
1信息需求 2 處理需求3 性能需求
3、簡(jiǎn)述用戶需求的方法與步驟
1跟班作業(yè) 2開(kāi)會(huì)調(diào)查 3問(wèn)卷調(diào)查 4訪談詢問(wèn) 5查詢記錄
4、抽象有哪些類型,局部試圖設(shè)計(jì)的步驟是什么
1分類 2聚集 3概括
5、簡(jiǎn)述全局視圖設(shè)計(jì)的方法與步驟
方法:一次集成逐步集成合并重構(gòu)
步驟: 1 合并局部E-R圖,消除沖突初步生成E-R圖2消除冗余,生成基本E-R圖
6、E-R圖如何向關(guān)系模型轉(zhuǎn)換,簡(jiǎn)述轉(zhuǎn)換的步驟和原則
概念模型向關(guān)系數(shù)據(jù)模型的轉(zhuǎn)化就是將用E-R圖表示的實(shí)體。實(shí)體屬性和實(shí)體聯(lián)系轉(zhuǎn)化為關(guān)系模式
原則: 一個(gè)實(shí)體型轉(zhuǎn)換成一個(gè)關(guān)系模式實(shí)體間的聯(lián)系跟圖聯(lián)系的類型轉(zhuǎn)換
7、如何優(yōu)化關(guān)系模型
1確定數(shù)據(jù)依賴 2對(duì)于各個(gè)關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行及消化處理 3按照數(shù)據(jù)依賴的理論對(duì)關(guān)系模式逐一進(jìn)行分析,確定各關(guān)系模式分別屬于第幾范式 4按照需求分析階段得到的各種應(yīng)用對(duì)數(shù)據(jù)處理的要求,分析對(duì)于這樣的應(yīng)用環(huán)境這些模式是否合適,確定是否對(duì)它們進(jìn)行合并和分解以提高數(shù)據(jù)操作的小龍和存儲(chǔ)空間的利用率。
8、試述數(shù)據(jù)庫(kù)物理設(shè)計(jì)的內(nèi)容和步驟
內(nèi)容:為關(guān)系模式選擇存取方法設(shè)計(jì)關(guān)系索引等數(shù)據(jù)庫(kù)文件的物理存儲(chǔ)結(jié)構(gòu)
步驟:確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)對(duì)物理結(jié)構(gòu)進(jìn)行評(píng)價(jià)
9、簡(jiǎn)述數(shù)據(jù)庫(kù)實(shí)施的步驟及運(yùn)行包含的內(nèi)容
步驟 :1 用DDL定義數(shù)據(jù)庫(kù)結(jié)構(gòu)2組織數(shù)據(jù)入庫(kù) 3編制與調(diào)制應(yīng)用程序
內(nèi)容:功能測(cè)試,性能測(cè)試
12、簡(jiǎn)述概念結(jié)構(gòu)設(shè)計(jì)的方法和步驟
自頂向下:首先定義全局的概念結(jié)構(gòu)框架,再逐步分解細(xì)化
自底向上:首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來(lái),得到全局概念結(jié)構(gòu) 逐步擴(kuò)張:首先定義核心的概念結(jié)構(gòu),然后以滾雪球方式向外部逐步擴(kuò)張
混合策略:把自頂向下自底向上結(jié)合,用自頂向下設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)框架,以自底向上設(shè)計(jì)各局部概念結(jié)構(gòu)
第二篇:視圖的定義刪除等的例題及SQL語(yǔ)句
實(shí)驗(yàn)四:視圖
一、實(shí)驗(yàn)?zāi)康?、掌握視圖的定義與維護(hù)操作
2、加深對(duì)視圖在關(guān)系數(shù)據(jù)庫(kù)中的作用的理解。
二、實(shí)驗(yàn)環(huán)境
已安裝SQL Server 2005 企業(yè)版的計(jì)算機(jī);
三、實(shí)驗(yàn)內(nèi)容
以數(shù)據(jù)庫(kù)原理實(shí)驗(yàn)1數(shù)據(jù)為基礎(chǔ),請(qǐng)使用T-SQL 語(yǔ)句實(shí)現(xiàn)進(jìn)行以下操作:
1、創(chuàng)建一個(gè)視圖,該視圖只含上??蛻粜畔?,即客戶號(hào)、客戶姓名、住址。
create view kh
as select cust_id,cust_name,addr
from customer where addr='上海'
2、對(duì)視圖添加一條記錄數(shù)據(jù)。(注意:分別查看customer表和該視圖的結(jié)果。)
insert into kh
values('c0021','李陽(yáng)','上海','0100888888')
3、刪除視圖中所有姓“王”的客戶數(shù)據(jù)。
delete from kh where cust_name like '王%'
4、通過(guò)視圖修改表內(nèi)某一客戶的姓名。
update kh set cust_name='萬(wàn)華' where cust_name='李勇'
5、有兩個(gè)基本表employee和sales,創(chuàng)建一個(gè)視圖,該視圖包含相同業(yè)務(wù)員的編號(hào)、姓名、訂單號(hào)、銷售總金額。
1.create view ywy as select sale_id,emp_name,order_no,tot_amt from employee,sales where employee.emp_no=sales.sale_id6、將上述視圖中訂單號(hào)為10001的記錄的銷售總金額改為60000。
update ywy set tot_amt=6000 where order_no='10001'
7、給上述視圖添加一條記錄數(shù)據(jù)。
2.insert into ywy values('E0005','張三','1236',25000)
8、刪除上述視圖。
9、drop view ywy
第三篇:如何設(shè)置演講者視圖
如何設(shè)置演講者視圖
如何設(shè)置演講者視圖前言:大家在看此篇文章之前心中是不是一直存有一個(gè)疑問(wèn),那就是office組件中的powerpoint(PPT)制作中的“備注”到底有何作用?
在工作中經(jīng)常用PPT放映演示給客戶進(jìn)行講演,也見(jiàn)識(shí)過(guò)專業(yè)講師和IT銷售給我介紹產(chǎn)品,使用的也是PPT。但是幾乎所有人的PPT使用方式還是停留在投影機(jī)上放什么,演講者的laptop上也顯示什么,演講者要么看自己的laptop的屏幕,要么看墻上的投 影?!皞渥ⅰ本蛷氐资チ俗饔?,因?yàn)楦究床灰?jiàn)。
出于納悶,我就詢問(wèn)了幾個(gè)號(hào)稱是office高手這個(gè)問(wèn)題,“備注”寫了是給誰(shuí)看的,有什么作用?
高手給出的答案竟然是“備注”用來(lái)給演講者回憶講演思路,或者此PPT給別人的時(shí)候別人講演前可以先了解一下制作此PPT的作者的思路意圖。
這些都是PPT的常規(guī)用法,或者說(shuō)并不怎么正確的用法,下面我給大家介紹如何高效的使用PPT進(jìn)行演講,并且充分利用“備注”的作用,以期為受眾作出最出色的講解。
下面我就開(kāi)始了。下面做演示用的PPT涉及某安全廠商,原因是我手頭做的比較好的PPT而且備注寫的比較詳細(xì)的也就這份了,我并沒(méi)有用于商業(yè)用途,我也不是該廠商員工,特別聲明。第一步,在你的laptop的顯示屬性中進(jìn)行設(shè)置。
如圖所示,在連接了外部顯示器或者投影儀的情況下,點(diǎn)擊“2”號(hào)屏幕,并按照?qǐng)D中高亮標(biāo)注處選中“將windows桌面擴(kuò)展到該顯示器”同時(shí)設(shè)置適當(dāng)?shù)姆直媛省?/p>
單擊“應(yīng)用”,就可以看到如下的效果。
由于家里沒(méi)有投影做演示,就用了一臺(tái)上了年紀(jì)的CRT做示意。從兩個(gè)屏幕可以看見(jiàn)不同的顯示內(nèi)容,左面的CRT的屏幕正是要給演講受眾看的。這樣,下面的觀眾就不會(huì)看見(jiàn)演講者的筆記本里面裝了什么東西,演講者可以根據(jù)自己的意愿把需要給觀眾看的放映出來(lái),而不是把演講者的所有操作都放映出來(lái)。(這個(gè)好處我就不多說(shuō)了,有過(guò)類似經(jīng)歷的朋友想必深有體會(huì))第二步,打開(kāi)你需要演講的PPT進(jìn)行放映前的準(zhǔn)備工作。選擇放映的設(shè)置 在圖中高亮的部分選中“顯示演講者視圖”(這個(gè)是重點(diǎn))
單擊確定后就完成了設(shè)置。第三步,開(kāi)始放映。點(diǎn)擊圖中的位置,或者直接按“F5”。兩者的區(qū)別是,F(xiàn)5從頭開(kāi)始放映,而圖示按鈕是從當(dāng)前slide開(kāi)始往后放映。最后,觀看效果 這個(gè)就是演講者看到的畫面,下面高亮的部分就是“備注”的內(nèi)容。.分析這個(gè)視圖,演講者不僅可以看見(jiàn)每個(gè)slide的預(yù)覽;
.還可以知曉下一張PPT的大致內(nèi)容(標(biāo)題);
.可以不用準(zhǔn)備,直接閱讀“備注”(對(duì)于新手和臨場(chǎng)不知所錯(cuò)的朋友比較適合);
.可以很好的控制演講時(shí)間;
.在進(jìn)行slide選擇(非正常流程)的時(shí)候,可以點(diǎn)擊“黑屏”,這樣觀眾就看不到你在進(jìn)行何種“胡亂操作”了。從觀眾處,看見(jiàn)的效果就如上所示。
怎么樣,對(duì)于經(jīng)常使用PPT演講的朋友,這個(gè)技巧很不錯(cuò)吧。
第四篇:創(chuàng)建一個(gè)視圖
創(chuàng)建一個(gè)視圖,該視圖中包括學(xué)生的姓名和學(xué)號(hào)。create view student_view
as
select sname,sno
from student
第五篇:oracle視圖總結(jié)
oracle視圖總結(jié)(轉(zhuǎn))
視圖簡(jiǎn)介: 視圖是基于一個(gè)表或多個(gè)表或視圖的邏輯表,本身不包含數(shù)據(jù),通過(guò)它可以對(duì)表里面的數(shù)據(jù)進(jìn)行查詢和修改。視圖基于的表稱為基表。視圖是存儲(chǔ)在數(shù)據(jù)字典里的一條select語(yǔ)句。通過(guò)創(chuàng)建視圖可以提取數(shù)據(jù)的邏輯上的集合或組合。
視圖的優(yōu)點(diǎn):
1.對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),因?yàn)橐晥D可以有選擇性的選取數(shù)據(jù)庫(kù)里的一部分。2.用戶通過(guò)簡(jiǎn)單的查詢可以從復(fù)雜查詢中得到結(jié)果。3.維護(hù)數(shù)據(jù)的獨(dú)立性,試圖可從多個(gè)表檢索數(shù)據(jù)。4.對(duì)于相同的數(shù)據(jù)可產(chǎn)生不同的視圖。
視圖的分類:
視圖分為簡(jiǎn)單視圖和復(fù)雜視圖。
兩者區(qū)別如下:
1.簡(jiǎn)單視圖只從單表里獲取數(shù)據(jù),復(fù)雜視圖從多表獲取數(shù)據(jù); 2.簡(jiǎn)單視圖不包含函數(shù)和數(shù)據(jù)組,復(fù)雜視圖包含; 3.簡(jiǎn)單視圖可以實(shí)現(xiàn)DML操作,復(fù)雜視圖不可以。
視圖的創(chuàng)建:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY] 其中:
OR REPLACE:若所創(chuàng)建的試圖已經(jīng)存在,ORACLE自動(dòng)重建該視圖; FORCE:不管基表是否存在ORACLE都會(huì)自動(dòng)創(chuàng)建該視圖; NOFORCE:只有基表都存在ORACLE才會(huì)創(chuàng)建該視圖: alias:為視圖產(chǎn)生的列定義的別名;
subquery:一條完整的SELECT語(yǔ)句,可以在該語(yǔ)句中定義別名;
WITH CHECK OPTION : 插入或修改的數(shù)據(jù)行必須滿足視圖定義的約束; WITH READ ONLY : 該視圖上不能進(jìn)行任何DML操作。
例如: Sql代碼
1.CREATE OR
REPLACE
VIEW dept_sum_vw
2.(name,minsal,maxsal,avgsal)
3.AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
4.FROM
emp e,dept d
5.WHERE e.deptno=d.deptno
6.GROUP BY d.dname;
視圖的定義原則:
1.視圖的查詢可以使用復(fù)雜的SELECT語(yǔ)法,包括連接/分組查詢和子查詢; 2.在沒(méi)有WITH CHECK OPTION和 READ ONLY 的情況下,查詢中不能使用 ORDER BY 子句;
3.如果沒(méi)有為CHECK OPTION約束命名,系統(tǒng)會(huì)自動(dòng)為之命名,形式為SYS_Cn;4.OR REPLACE選項(xiàng)可以不刪除原視圖便可更改其定義并重建,或重新授予對(duì)象權(quán)限。
查詢視圖:
視圖創(chuàng)建成功后,可以從視圖中檢索數(shù)據(jù),這點(diǎn)和從表中檢索數(shù)據(jù)一樣。示例:
SQL>SELECT * FROM dept_sum_vw;
修改視圖:
通過(guò)OR REPLACE 重新創(chuàng)建同名視圖即可。
刪除視圖:
DROP VIEW VIEW_NAME語(yǔ)句刪除視圖。刪除視圖的定義不影響基表中的數(shù)據(jù)。
只有視圖所有者和具備DROP VIEW權(quán)限的用戶可以刪除視圖。視圖被刪除后,基于被刪除視圖的其他視圖或應(yīng)用將無(wú)效。
查詢視圖定義:
SELECT view_name,text from user_views;其中text顯示的內(nèi)容為視圖定義的SELECT語(yǔ)句,可通過(guò)DESC USER_VIEWS 得到相關(guān)信息。
視圖上的DML 操作: DML操作應(yīng)遵循的原則:
1.簡(jiǎn)單視圖可以執(zhí)行DML操作; 2.在視圖包含GROUP 函數(shù),GROUP BY子句,DISTINCT關(guān)鍵字時(shí)不能刪除數(shù)據(jù)行; 3.在視圖不出現(xiàn)下列情況時(shí)可通過(guò)視圖修改基表數(shù)據(jù)或插入數(shù)據(jù):
a.視圖中包含GROUP 函數(shù),GROUP BY子句,DISTINCT關(guān)鍵字; b.使用表達(dá)式定義的列; c.ROWNUM偽列。
d.基表中未在視圖中選擇的其他列定義為非空且無(wú)默認(rèn)值。WITH CHECK OPTION 子句
通過(guò)視圖執(zhí)行的INSERTS和UPDATES操作不能創(chuàng)建該視圖檢索不到的數(shù)據(jù)行,因?yàn)樗鼤?huì)對(duì)插入或修改的數(shù)據(jù)行執(zhí)行完整性約束和數(shù)據(jù)有效性檢查。(也就是說(shuō)在執(zhí)行INSERTS、UPDATES時(shí),WHERE條件中除需要INSERT、UPDATE本身的限制條件之外,還需要加上視圖創(chuàng)建時(shí)的WHERE條件。)
例如:
CREATE OR REPLACE VIEW vw_emp20 AS SELECT * FROM emp WHERE deptno=20 WITH CHECK OPTION constraint vw_emp20_ck;視圖 已建立。
查詢結(jié)果:
SELECT empno,ename,job FROM vw_emp20;EMPNO
ENAME
JOB---------------------
--------------
-------------7369
SMITH
CLERK 7566
JONES
MANAGER 7902
FORD
ANALYST 修改:
UPDATE vw_emp20 SET
deptno=20 WHERE empno=7902;將產(chǎn)生錯(cuò)誤:
UPDATE vw_emp20 * ERROR 位于第一行:
ORA-01402:視圖WITH CHECK OPTION 違反WHERE 子句
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1,Oracle是可以通過(guò)視圖來(lái)修改Base table的。所謂base table就是用來(lái)構(gòu)建視圖的表,也就是視圖的數(shù)據(jù)來(lái)源表。但是這種修改是有條件的。比如: create view v_emp as select empno,ename,job,deptno from emp where deptno=10 with check option constraint emp_cnst;如果有這個(gè)限制,那么通過(guò)視圖v_emp 插入數(shù)據(jù)的deptno字段的值必須是10,否則就會(huì)報(bào)“ORA-01402: 視圖 WITH CHECK OPTIDN 違反 where 子句”的異常。
2,聯(lián)結(jié)視圖:
create view dept1_staff as select e.ename, e.empno, e.job, d.deptno, d.dname from emp e,dept d where e.deptno in(10,30)and e.deptno = d.deptno; 將兩個(gè)表的數(shù)據(jù)聯(lián)結(jié)起來(lái),看起來(lái)應(yīng)該是一個(gè)內(nèi)聯(lián)結(jié)(Inner joint)。
對(duì)于聯(lián)結(jié)視圖(Joint view)的修改規(guī)則稍顯復(fù)雜,設(shè)計(jì)到所謂key_preserved table的概念。通過(guò)聯(lián)結(jié)視圖來(lái)修改基表,只有那些key_preserved 的表才能被修改。上述創(chuàng)建視圖語(yǔ)句中emp和dept通過(guò)deptno進(jìn)行聯(lián)結(jié)構(gòu)成視圖時(shí),emp就是key_preserved 表,而dept不是。為什么?因?yàn)樵赿ept1_staff 中empno的值唯一的而deptno不是唯一的。所以emp是key_preserved 而dept不是。因此只能通過(guò)該視圖來(lái)修改emp,而不能修改dept的數(shù)據(jù)。
3,Oracle視圖非常強(qiáng)大的功能之一在于其可以創(chuàng)建一個(gè)帶有錯(cuò)誤的視圖。比如說(shuō)視圖里的字段在基表里不存在,該視圖仍然可以創(chuàng)建成功,但是非法的且無(wú)法執(zhí)行。當(dāng)基表里加入了該字段,或者說(shuō)某個(gè)字段修改成視圖里的該字段名稱,那么視圖馬上就可以成為合法的。這個(gè)功能很有意思。例子:
創(chuàng)建基表: create table v_test(name varchar2(32),age number(12));創(chuàng)建帶錯(cuò)誤的視圖:
create force view view_test as select name,age,address from v_test;(注意加上force選項(xiàng))
由于address字段在v_test里不存在,所以會(huì)報(bào)warning: View created with compilation errors的警告,而且執(zhí)行select * from view_test;時(shí)會(huì)報(bào)“ORA-04063: view “SCOTT.VIEW_TEST” 有錯(cuò)誤”的異常。但是如果在v_test里加上address字段,那么視圖就會(huì)合法。對(duì)基表進(jìn)行修改:
alter table v_test add(address varchar2(128));
現(xiàn)在再執(zhí)行select * from view_test;就會(huì)執(zhí)行成功了。
from:http://www.blogjava.net/jinhualee/archive/2006/07/14/58115.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其他問(wèn)題總結(jié):
1、視圖上是否可以創(chuàng)建索引?
一般視圖上不用建立索引,對(duì)視圖的操作最終會(huì)轉(zhuǎn)化為對(duì)表的操作。一個(gè)討論:http://www.itpub.net/viewthread.php?tid=150019&extra=&page=1