目錄
11.1.1 視圖的含義
視圖是一個虛擬表,是從數據庫中一個或多個表中導出來的表。視圖還可以從已經存在的視圖的基礎上定義。
11.1.2 視圖的作用
● 簡單性:將經常使用到的查詢定義爲表,簡單;
● 安全性:只能修改和查詢所看見的數據;
● 邏輯數據獨立性:拜託真實表結果的變化帶來的影響。
11.2.1 創建視圖的語法形式
基於已存在的表和查詢語句;
創建視圖使用CREATE VIEW語句,基本語法格式如下:
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
視圖屬於數據庫,默認在當前數據庫創建新視圖,若想在其他數據庫創建,則將名稱改爲db_name.view_name.
11.2.2 在單表上創建視圖
MySQL可以在單個數據表上創建視圖。
11.2.3 在多表上創建視圖
MySQL中也可以在兩個或者兩個以上的表上創建視圖,可以使用CREATE VIEW語句實現。
11.3.1 DESCRIBE/DESC 視圖名 語句查看視圖基本信息
11.3.2 SHOW TABLE STATUS語句查看視圖基本信息
SHOW TABLE STATUS LIKE '視圖名';
11.3.3 使用SHOW CREATE VIEW語句可以查看視圖詳細定義。
SHOW CREATE VIEW 視圖名;
11.3.4 在views表中查看視圖詳細信息
在MySQL中,information_schema數據庫下的views表中存儲了所有視圖的定義。通過對views表的查詢,可以查看數據庫中所有的視圖的詳細信息。
SELECT * FROM information_schema.views;
11.4 修改視圖屬性
11.4.1 CREATE OR REPLACE VIEW語句修改視圖
11.4.2 ALTER語句修改視圖
ALTER語句是MySQL提供的另外一種修改視圖的方法。
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
11.5 更新視圖內容
更新視圖是指通過視圖來插入、更新、刪除表中的數據,因爲視圖是一個虛擬表,其中沒有數據。通過視圖更新的時候都是轉到基本表進行更新的,如果對視圖增加或者刪除記錄,實際上是對其基本表增加或者刪除記錄。
Update,insert, delete。
Update view_name SET var_name= new_value;
Insert into 表名/視圖名 values (鍵值對);
Delete from 表名/視圖名 條件;
Ps:當視圖中包含有如下內容時,視圖的更新操作將不能被執行:
(4)視圖中不包含基表中被定義爲非空的列。
(1)在定義視圖的SELECT語句後的字段列表中使用了數學表達式。
(2)E定義視圖的SELECT語句後的字段列表中使用聚合函數。
(3)在定義視圖的SELECT語句中使用了DISTINCT, UNION, TOP, GROUP BY或HAVING子句。
11.6 刪除視圖
當視圖不再需要時,可以將其刪除,刪除一個或多個視圖可以使用DROP VIEW語句,刪除視圖必須擁有DROP權限。
DROP VIEW [IF EXISTS]
view_name [, view_name] ...
[RESTRICT | CASCADE] 限制和條件