MySQL學習——操作視圖 摘要:本文主要學習了使用DDL語句操作視圖的方法。 瞭解視圖 是什麼 視圖是從一個、多個表或者視圖中導出的表,包含一系列帶有名稱的數據列和若幹條數據行。 特點 視圖不是資料庫中真實的表,而是一張虛擬表,其結構和數據是建立在對數據中真實表的查詢基礎上的。 視圖是查看數據表的 ...
MySQL學習——操作視圖
摘要:本文主要學習了使用DDL語句操作視圖的方法。
瞭解視圖
是什麼
視圖是從一個、多個表或者視圖中導出的表,包含一系列帶有名稱的數據列和若幹條數據行。
特點
視圖不是資料庫中真實的表,而是一張虛擬表,其結構和數據是建立在對數據中真實表的查詢基礎上的。
視圖是查看數據表的一種方法,可以查詢數據表中某些列構成的數據,只是一些SQL語句的集合。從安全的角度來看,視圖的數據安全性更高,使用視圖的用戶不接觸數據表,不知道表結構。
視圖的建立和刪除隻影響視圖本身,不影響對應的基本表。
使用視圖
查詢視圖數據的語句和查詢表的語句是一樣的。
修改視圖數據的語句實際上是通過修改表的數據實現的,對於可修改的視圖,視圖中的行和基本表的行之間必須具有一對一的關係。
使用註意
視圖不包含數據,所以每次使用視圖時,都必須執行查詢中所需的任何一個檢索操作。如果用多個連接和過濾條件創建了複雜的視圖或嵌套了視圖,可能會發現系統運行性能下降得十分嚴重。因此,在部署大量視圖應用時,應該進行系統測試。
創建視圖
語法
1 create view 視圖名 (列1, 列2, ..., 列n) as 查詢語句;
列名可以任意取名,但數量必須和查詢的列名相等,如果不指明視圖的列名,預設使用查詢語句的列名。
實例
創建一個簡單的視圖:
1 mysql> create view score_view as select * from score; 2 Query OK, 0 rows affected (0.01 sec) 3 4 mysql>
創建視圖並指定列:
1 mysql> create view score_view (編號, 學生, 科目, 成績) as select id, student, course, grade from score; 2 Query OK, 0 rows affected (0.00 sec) 3 4 mysql>
查看視圖結構
語法
1 desc 視圖名;
實例
1 mysql> desc score_view; 2 +--------+-------------+------+-----+---------+-------+ 3 | Field | Type | Null | Key | Default | Extra | 4 +--------+-------------+------+-----+---------+-------+ 5 | 編號 | int(10) | NO | | 0 | | 6 | 學生 | varchar(20) | NO | | NULL | | 7 | 科目 | varchar(20) | NO | | NULL | | 8 | 成績 | int(10) | YES | | NULL | | 9 +--------+-------------+------+-----+---------+-------+ 10 4 rows in set (0.00 sec) 11 12 mysql>
說明
Field:列名。
Type:類型。
Null:表示該列是否可以存儲NULL值。
Key:表示該列是否已編製索引。PRI表示該列是主鍵的一部分,UNI表示該列是UNIQUE索引的一部分,MUL表示在列中某個給定值允許出現多次。
Default:表示該列是否有預設值,如果有,值是多少。
Extra:表示可以獲取的與給定列有關的附加信息,如:AUTO_INCREMENT等。
修改視圖
語法
1 alter view 視圖名 (列1, 列2, ..., 列n) as 查詢語句;
實例
1 mysql> alter view score_view (學生, 課程, 成績) as select student, course, grade from score; 2 Query OK, 0 rows affected (0.01 sec) 3 4 mysql>
刪除視圖
語法
1 drop view 視圖名;
實例
1 mysql> drop view score_view; 2 Query OK, 0 rows affected (0.00 sec) 3 4 mysql>