mysql視圖創建的語句,就不過多贅述,下面提供一個示例。主要講的是mysql創建視圖時的一些特性。
創建視圖示例:
create or replace view staff_list_view as select s.staff_id,s.first_name,s.last_name,a.address from staff as s, address as a where s.address_id = a.address_id
mysql創建視圖的時候有一些限制。例如,在from關鍵字后面不能包含子查詢,這和其他的數據庫是不同的,如果視圖時從其他數據庫遷移過來,那么可能需要因此做一些改變,可以將子查詢的內容先定義為一個視圖,然后對該視圖再創建視圖就可以實現類似的功能。
一下類型的視圖是不可以更新的。
1、包含一下關鍵字的sql語句:聚合函數(sum、min、max、count等)、distinct、group by、having、union、union all。 2、常量視圖 3、select中包含子查詢 4、join 5、from一個不能更新的視圖 6、where字句的子查詢引用了from字句中的表。
with [cascaded | local] check option
1、local只要滿足本視圖的條件就可以更新。
2、cascaded則必須滿足所有針對該視圖的所有視圖條件才可以更新。沒有寫cascaded 還是 local時,默認是cascaded 。
執行show tables命令時,不僅顯示表的名字,同時也會顯示視圖的名字,而不存在單獨顯示視圖的show views命令。
同樣在使用show tables status命令時,不但可以顯示表的信息,同時也可以顯示視圖的信息。
show table status like 'staff_list';
查詢某個視圖的定義
show create view staff_list;
通過系統表information_schema.views也可以查看視圖的相關信息。
select * from views where table_name = 'staff_list';