標籤:
視圖是對磁碟上儲存的表資料的抽象,即抽取一個表或多個表的部分行或列的資料,展示給使用者。
首先列舉下MySQL中最簡單的對視圖操作的文法:
1、建立視圖:
create view 視圖名 as select語句例如:create view v_fruit as select name,place,weight from t_fruit where weight<=12;
據我所知,“as”後面的語句肯定都是以“select”開頭的,可以理解成視圖的建立結果就是一張新的表格,表格裡面有哪些東西呢,就是select語句的結果;另外這張新的“表格”的欄位與“select”後面的名字對應,在上例中就是name,place,weight,但是也可以用as或省略as的別名形式,改變新“表格”的欄位名,例如:
create view v_fruit as select name myname,place as myplace,weight from t_fruit where weight<=12;
這樣,“新表格”的包含的所有欄位名就是myname,myplace,weight
上面的視圖是在一張表的基礎上建立的,也可以根據多張表串連查詢,或者根據其他的視圖建立
2、使用視圖:
視圖一旦建立,操作起來就跟表格一樣,愛怎麼玩就怎麼玩,至少你往編輯器裡面輸語句,肯定不會報錯。實際執行階段就不一樣了,對於select from的查詢操作,肯定不會出任何問題;但是對於增、刪、改,因為視圖實際儲存的只是定義,這三個操作會改動底下的實際的表格,而你看到的view,裡面的資料可能來源於好幾個表格,也有可能是通過和、平均數等計算得到的,一旦insert、delete或者update,改動就會特別複雜。為了保險起見,對於一些情況,增刪改直接會被MySQL系統判定為誤操作,無法成功。這裡修改失敗的情況特別多,只列舉幾個,比如改動涉及到兩個或兩個以上的表會失敗,改動後not null的列沒有值會失敗,view的列值通過sum、count等計算得到的會失敗。
3、修改視圖:
有兩種方法,一種是常規的alter,另一種可以跟建立視圖的共用
①alter方法,只需把建立時的create改成alter就行,比如:
alter view v_fruit as select place as myplace,weight from t_fruit where weight<=12;
②第1點建立視圖裡面漏了沒說,實際上存在建立和修改視圖可以共用的方法:create or replace,只要把create換成這3個單詞,其他不要變
create or replace view v_fruit as select place as myplace,weight from t_fruit where weight<=12;
4、刪除視圖:
drop view 視圖名;或者drop view 視圖1,視圖2,...
5、查看視圖各欄位的定義:
describe 視圖名;或者desc 視圖名;
更深層次分析未完待續。。。
MySQL學習筆記之視圖