標籤:mys with statement 獨立性 協助 sel upd 行資料 帶來
視圖
視圖概述
視圖是指從一個或幾個基本表中匯出的表,可以像操作基本表一樣操作視圖。視圖中只存放視圖定義而不存放視圖對應的資料。
如果基本表的資料發生變化,從視圖中查詢出的資料也會發生變化。因此可以把視圖認為是一個虛擬表。
優點
簡化查詢語句
日常開發中我們可以將經常使用的查詢定義為視圖,從而使使用者避免大量重複的操作。
安全性
通過視圖使用者只能查詢和修改他們所能見到的資料,資料庫中的其他資料則既看不到也取不到。
邏輯資料獨立性
視圖可以協助使用者屏蔽真實表結構變化帶來的影響。
視圖管理
建立視圖的文法格式
create view<視圖名>[(<列名>...)] as 子查詢 [WITH CHECK OPTION]
子查詢可以出現任意select語句,但通常在查詢語句中不允許出現Order by和DISTINCT
在單表上建立視圖
在多表上建立視圖
查看視圖
使用DESCRIBE語句可以查看視圖的欄位資訊
DESCRIBE 視圖名;
或DESC 視圖名;
使用SHOW TABLE STATUS語句可以查看視圖的基本資料
SHOW TABLE STATUS LIKE ‘視圖名‘
使用SHOW CREATE VIEW語句不僅可以查看建立視圖時的定義語句,還可以查看視圖的字元編碼
SHOW CREATE VIEW 視圖名;
修改視圖
由於視圖是不實際儲存資料的虛擬表,因此更新視圖的操作,最終要轉化為對基本表的更新操作。為了防止對視圖進行資料更新時,對不屬於視圖範圍的基本表資料進行操作,可以在定義視圖時加上WITH CHECK OPTION子句。
我們發現表中資料發生了改變。由於視圖多是給使用者進行瀏覽的,並不需要其進行修改,所以這樣做很不安全。所以我們一般在SQL語句末尾加上WITH CHECK OPTION子句,這樣使用者就不能隨意進行修改了。
1、使用CREATE OR REPLACE VIEW語句修改視圖
CREATE [OR REPLACE ][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH[CASCADED | LOCAL] CHECK OPTION]
2、使用ALTER語句修改視圖
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH[CASCADED | LOCAL] CHECK OPTION]
更新視圖
當視圖中包含有如下內容時,視圖的更新操作將不能被執行:
視圖中不包含基本表中被定義為非空的列。
在定義視圖的SELECT語句後的欄位列表中使用了數學運算式。
在定義視圖的SELECT語句後的欄位列表中使用彙總函式。
在定義視圖的SELECT語句中使用了DISTINCT,UNION,TOP,GROUP BY或HAVING子句。
使用UPDATE語句更新視圖
使用DELETE語句更新視圖
使用INSERT語句更新視圖
刪除視圖
只能刪除視圖的定義,不會刪除資料。
drop view <視圖名>
應用案例--視圖的應用
MySQL<視圖>