MySQL視圖學習整理
第一部分:初級概念及應用
一,視圖簡介
MySQL的視圖和Oracle視圖是一個概念,就是一張虛擬表,沒有任何數據的,數據還是存放在基表裡面的;
二,添加視圖
1:語法
CREATE
[OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
2:舉例(創建視圖 )
mysql> use ehrt;
Database changed
mysql> create algorithm = MERGE view t1 as select * from user;
三,修改視圖
1:語法
ALTER
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
2:舉例
mysql> alter view t1 as select * from user where name='Jacson';
四,查看視圖
1.查看視圖數據
mysql> use ehrt;
mysql> select * from t1;
+----+------+-----+
| id | name | sex |
+----+------+-----+
| 1 | Jacson | 0 |
| 2 | Bai | 0 |
+----+------+-----+
2 rows in set (0.00 sec)
2.查看視圖結構
mysql> show create view t1G;
五,刪除視圖
mysql> drop view t1;
Query OK, 0 rows affected (0.00 sec)
第二部分:高級概念整理
一,視圖的類型
mysql的視圖有三種類型:MERGE、TEMPTABLE、UNDEFINED。如果不指定ALGORITHM子句,默認算法為UNDEFINED。這個方式決定了影響MySQL處理視圖的速度。
1,MERGE,會將引用視圖的語句的文本與視圖定義合並起來,使得視圖定義的某一部分取代語句的對應部分。
2,TEMPTABLE,視圖的結果將被置於臨時表中,然後使用它執行語句。
3,UNDEFINED,讓自己MySQL選擇所要使用的算法。
建議一般開發者,在物理主機內存不大或者考慮程序可移植的情況下一般選擇MERGE
--未完待續
第三部分:高級應用
1.能否監控視圖是否失效?
--未完待續