MySQL数据库:视图View
?
一、視圖的定義:
視圖(View)是從一個或者多個表(或視圖)導(dǎo)出的表,其內(nèi)容由查詢定義。視圖是一個虛擬表,數(shù)據(jù)庫中只存儲視圖的定義,不存儲視圖對應(yīng)的數(shù)據(jù),在對視圖的數(shù)據(jù)進(jìn)行操作時,系統(tǒng)根據(jù)視圖的定義去操作相應(yīng)的基本表。
可以說,視圖是在基本表之上建立的表,它的結(jié)構(gòu)和內(nèi)容都來自基本表,依據(jù)基本表存在而存在。一個視圖可以對應(yīng)一個基本表,也可以對應(yīng)多個基本表。視圖是基本表的抽象和在邏輯意義上建立的新關(guān)系。
?
二、視圖的作用:
1、簡化了操作,把經(jīng)常使用的數(shù)據(jù)定義為視圖:
我們在使用查詢時,在很多時候我們要使用聚合函數(shù),同時還要顯示其它字段的信息,可能還會需要關(guān)聯(lián)到其它表,這時寫的語句可能會很長,如果這個動作頻繁發(fā)生的話,我們可以創(chuàng)建視圖,之后只需要使用select * from view就可以了,簡化了操作。?
2、安全性,用戶只能查詢和修改能看到的數(shù)據(jù):
視圖的安全性可以防止未授權(quán)用戶查看特定的行或列,使用戶只能看到表中特定行列,定制用戶的數(shù)據(jù),因為視圖是虛擬的,物理上是不存在的,只是存儲了數(shù)據(jù)的集合,我們可以將基表中重要的字段信息,不通過視圖給用戶。視圖是動態(tài)的數(shù)據(jù)的集合,數(shù)據(jù)是隨著基表的更新而更新。同時,用戶對視圖不可以隨意的更改和刪除,可以保證數(shù)據(jù)的安全性。?
3、邏輯上的獨(dú)立性,屏蔽了真實(shí)表的結(jié)構(gòu)帶來的影響:
視圖可以使應(yīng)用程序和數(shù)據(jù)庫表在一定程度上獨(dú)立,如果沒有視圖,應(yīng)用一定是建立在表上。有了視圖之后,程序可以建立在視圖之上,從而程序與數(shù)據(jù)庫表被視圖分割開來。
?
三、視圖的缺點(diǎn):
1、性能差:
數(shù)據(jù)庫必須把視圖查詢轉(zhuǎn)化成對基本表的查詢,如果這個視圖是由一個復(fù)雜的多表查詢所定義,那么,即使是視圖的一個簡單查詢,數(shù)據(jù)庫也要把它變成一個復(fù)雜的結(jié)合體,需要花費(fèi)一定的時間。(每次SELECT視圖的時候,視圖都會重新計算創(chuàng)建它的規(guī)則,即sql算法,如果算法復(fù)雜,數(shù)據(jù)量大,那樣每次查詢就很慢了)
2、修改限制:
當(dāng)用戶試圖修改視圖的某些信息時,數(shù)據(jù)庫必須把它轉(zhuǎn)化為對基本表的某些信息的修改,對于簡單的視圖來說,這是很方便的,但是,對于比較復(fù)雜的試圖,可能是不可修改的。
?
四、視圖的相關(guān)操作:
對視圖的修改:單表視圖一般用于查詢和修改,會改變基本表的數(shù)據(jù),多表視圖一般用于查詢,不改變基本表的數(shù)據(jù)。
參考鏈接:http://www.w3school.com.cn/sql/sql_view.asp
1、創(chuàng)建視圖:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
注釋:視圖總是顯示最近的數(shù)據(jù)。每當(dāng)用戶查詢視圖時,數(shù)據(jù)庫引擎通過使用 SQL 語句來重建數(shù)據(jù)。
2、查詢視圖:
seclect column_name(s) from view_name;
3、更新視圖:
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
4、刪除視圖:
Drop View view_name;
?
五、視圖與表的區(qū)別:
1、視圖不占用物理空間,只是邏輯概念的存在,數(shù)據(jù)庫中只存儲視圖的定義,不存儲視圖對應(yīng)的數(shù)據(jù),沒有實(shí)際的物理記錄,是虛表。而表是實(shí)際的物理記錄,需要占用物理空間。
2、表是內(nèi)容,視圖是窗口。
3、表是內(nèi)模式,視圖是外模式。
4、視圖的建立和刪除只影響視圖本身,不影響對應(yīng)的基本表。但是,基本表的刪除和修改會影響到視圖。
5、視圖是查看數(shù)據(jù)表的一種方法,可以查詢數(shù)據(jù)表中某些字段構(gòu)成的數(shù)據(jù),是一些SQL語句執(zhí)行結(jié)果集合的可視化的表。從安全的角度說,視圖可以不給用戶接觸數(shù)據(jù)表,從而不知道表結(jié)構(gòu)。
?
?
參考文章:https://blog.csdn.net/buhuikanjian/article/details/53105416
總結(jié)
以上是生活随笔為你收集整理的MySQL数据库:视图View的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL数据库:存储过程Procedu
- 下一篇: MySQL数据库:触发器Trigger