視圖是一種虛擬存在的表,對於使用視圖的用戶來說,基本上跟使用正常的表一樣。視圖在數據庫中是不存在的,視圖中的數據是動態生成的。
視圖相對於普通表的優勢:
視圖操作分為創建視圖、修改視圖、刪除視圖、查看視圖定義。
#創建視圖
create [or replace] [algorithm={undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with[cascaded|local] check option]
#修改視圖
alter [algorithm={undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with[cascaded|local] check option]
舉例:
create view view_test as
select t1.sid,t1.username,t2.department
from test1 t1 left join test2 t2 on t1.sid=t2.sid;
<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxjb2RlIGNsYXNzPQ=="language-sql hljs ">說明:
from關鍵字後面不能包含子查詢; 不能更新的視圖:包含聚合函數/group/distinct/having/union,常量視圖,select中包含子查詢,jion,from一個不能更新的視圖,where中子查詢引用from子句中的表。 with[cascaded|local] check option 絕對是否允許更新數據使記錄不再滿足視圖條件。其中local-只需滿足本視圖條件就可以更新、cascaded-必須滿足所有針對該視圖的所有視圖的條件才可以更新。默認為cascaded。
查看視圖數據
同普通表
select * from view_test;
;
刪除視圖
#刪除視圖
drop view [if exists] view_name [,view_name2]...[restrict|cascade]
#舉例
drop view view_test;
查看視圖狀態
從MySQL5.1開始,使用show tables命令的時候不僅顯示表名還顯示視圖名稱。