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