hibernate配置數(shù)據(jù)庫
視圖有以下幾方面的功能:
1.簡化應(yīng)用程序。
視圖做為數(shù)據(jù)庫中的一種實體,實際上存在的只是它的腳本,而它的內(nèi)容并不真正的單獨存在一份。一般,可以對復(fù)雜的應(yīng)用程序從功能角度進(jìn)行分析,將可以與其它的應(yīng)用程序共用的那一部分,分離出來。對這部分功能,視具體情況可做成不同的數(shù)據(jù)庫實體(如過程),有些是可以做成視圖的。這樣,上層的應(yīng)用程序就可以從視圖中取數(shù)據(jù)了。
還有,可以把對遠(yuǎn)地數(shù)據(jù)庫的訪問封裝在視圖中,使之對上層應(yīng)用程序透明。
2.可以對 UNION 后的記錄集排序。
直接對以下語句的結(jié)果排序,是不可能的(至少我不知道怎么直接排序)。
select a.id id from a
union
select b.id id from b;
所以把以上語句作成視圖后,就可以了。設(shè)視圖名為A_B:
select id from A_B order by id;
3.可以實現(xiàn)一定的權(quán)限控制。
可以根據(jù)需要,對表中的一部分內(nèi)容做一個視圖,以供一定的角色使用??梢詫Ρ碇械囊徊糠钟涗涀鲆粋€視圖(縱向),也可以對一個表中的一部分字段做一個視圖(橫向),或二者兼而有之。
暫時想了這么多,希望大家多多指正與補(bǔ)充。
--------------------------------------------------------------------
視圖是一個虛擬表,其內(nèi)容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中以存儲的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時動態(tài)生成。
對其中所引用的基礎(chǔ)表來說,視圖的作用類似于篩選。定義視圖的篩選可以來自當(dāng)前或其它數(shù)據(jù)庫的一個或多個表,或者其它視圖。分布式查詢也可用于定義使用多個異類源數(shù)據(jù)的視圖。如果有幾臺不同的服務(wù)器分別存儲組織中不同地區(qū)的數(shù)據(jù),而您需要將這些服務(wù)器上相似結(jié)構(gòu)的數(shù)據(jù)組合起來,這種方式就很有用。
一、視圖的作用
* 簡單性??吹降木褪切枰?。視圖不僅可以簡化用戶對數(shù)據(jù)的理解,也可以簡化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。
* 安全性。通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù)。數(shù)據(jù)庫中的其它數(shù)據(jù)則既看不見也取不到。數(shù)據(jù)庫授權(quán)命令可以使每個用戶對數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對象上,但不能授權(quán)到數(shù)據(jù)庫特定行和特定的列上。通過視圖,用戶可以被限制在數(shù)據(jù)的不同子集上:
使用權(quán)限可被限制在基表的行的子集上。
使用權(quán)限可被限制在基表的列的子集上。
使用權(quán)限可被限制在基表的行和列的子集上。
使用權(quán)限可被限制在多個基表的連接所限定的行上。
使用權(quán)限可被限制在基表中的數(shù)據(jù)的統(tǒng)計匯總上。
使用權(quán)限可被限制在另一視圖的一個子集上,或是一些視圖和基表合并后的子集上。
* 邏輯數(shù)據(jù)獨立性。視圖可幫助用戶屏蔽真實表結(jié)構(gòu)變化帶來的影響。
二、視圖的優(yōu)點
(1)視圖能簡化用戶的操作
(2)視圖機(jī)制可以使用戶以不同的方式查詢同一數(shù)據(jù)
(3)視圖對數(shù)據(jù)庫重構(gòu)提供了一定程度的邏輯獨立性
(4)視圖可以對機(jī)密的數(shù)據(jù)提供安全保護(hù)
三、視圖的安全性
視圖的安全性可以防止未授權(quán)用戶查看特定的行或列,是用戶只能看到表中特定行的方法如下:
1 在表中增加一個標(biāo)志用戶名的列;
2 建立視圖,是用戶只能看到標(biāo)有自己用戶名的行;
3 把視圖授權(quán)給其他用戶。
四、邏輯數(shù)據(jù)獨立性
視圖可以使應(yīng)用程序和數(shù)據(jù)庫表在一定程度上獨立。如果沒有視圖,應(yīng)用一定是建立在表上的。有了視圖之后,程序可以建立在視圖之上,從而程序與數(shù)據(jù)庫表被視圖分割開來。視圖可以在以下幾個方面使程序與數(shù)據(jù)獨立:
1 如果應(yīng)用建立在數(shù)據(jù)庫表上,當(dāng)數(shù)據(jù)庫表發(fā)生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動。
2 如果應(yīng)用建立在數(shù)據(jù)庫表上,當(dāng)應(yīng)用發(fā)生變化時,可以在表上建立視圖,通過視圖屏蔽應(yīng)用的變化,從而使數(shù)據(jù)庫表不動。
3 如果應(yīng)用建立在視圖上,當(dāng)數(shù)據(jù)庫表發(fā)生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應(yīng)用程序可以不動。
4 如果應(yīng)用建立在視圖上,當(dāng)應(yīng)用發(fā)生變化時,可以在表上修改視圖,通過視圖屏蔽應(yīng)用的變化,從而數(shù)據(jù)庫可以不動。
五、視圖的書寫格式
Create VIEW <視圖名>[(列名組)]
AS <子查詢>
Drop VIEW <索引名>
注意:視圖可以和基本表一樣被查詢,但是利用視圖進(jìn)行數(shù)據(jù)增,刪,改操作,會受到一定的限制。
(1)由兩個以上的基本表導(dǎo)出的視圖
?。?)視圖的字段來自字段表達(dá)式函數(shù)
?。?)視圖定義中有嵌套查詢
?。?)在一個不允許更新的視圖上定義的視圖