mysql之視圖


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';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM