檢視表是一個虛擬的資料表,從MySQL 5.0.1 版本即開始支援
在使用時,設計者可自行將多個表格進行關聯、篩選,製作成一份獨立的檢視表
使用上,具有以下優點
- 簡單明瞭: 使用者不需要理解整個資料結構,直接呼叫檢視表就能取得整合完成的資料
- 安全: 使用者僅能看到檢視表允許查詢的部分
- 獨立: 檢視表結構會彙整關聯的資料表,當關聯資料表新增資料時,也能同時取得;僅有當關聯表修改列名時,才需要調整檢視表的結構對應名稱
建立檢視表
CREATE OR REPLACE VIEW user_view AS SELECT * FROM user;
Query OK, 0 rows affected (0.01 sec)
刪除檢視表
DROP VIEW user_view
Query OK, 0 rows affected (0.00 sec)
查看檢視表
SELECT * FROM user_view;
+-------+------------+
| names | join_date |
+-------+------------+
| a | 2018-01-01 |
| adam | 2018-02-01 |
| adam | 2018-02-01 |
+-------+------------+
3 rows in set (0.00 sec)
更新檢視表
檢視表對於更新資料有諸多限制,
在一般單純 SELECT 的檢視表,可執行 UPDATE 功能
但是有用到 sum, min, max,count, distinct, group by, having, union…. 等函式,都無法執行更新
在這裡還是建議,檢視表盡量僅用於檢視功能,如果需要進一步的操作,應該使用其他方式
UPDATE user_view set names='aa' WHERE names='a';
Query OK, 1 row affected (0.00 sec)
SELECT * FROM user_view;
+-------+------------+
| names | join_date |
+-------+------------+
| aa | 2018-01-01 |
| adam | 2018-02-01 |
| adam | 2018-02-01 |
+-------+------------+
3 rows in set (0.00 sec)
查看檢視表定義
SHOW TABLE STATUS LIKE 'user_view' \G
*************************** 1. row ***************************
Name: user_view
Engine: NULL
Version: NULL
Row_format: NULL
Rows: NULL
Avg_row_length: NULL
Data_length: NULL
Max_data_length: NULL
Index_length: NULL
Data_free: NULL
Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: NULL
Checksum: NULL
Create_options: NULL
Comment: VIEW
1 row in set (0.00 sec)
檢視表中建立檢視表
在MySQL 檢視表的定義存在一些限制,包括 FROM 之後不能有子查詢,使用 sum, min, max,count, distinct, group by, having, union…. 等函式,都無法執行更新..等
Continue Reading