mysql視圖,mysql視圖的作用

來源:互聯網
上載者:User

mysql視圖,mysql視圖的作用

視圖是虛擬表,是從資料庫中一個或多個表中匯出來的表。視圖還可以從已經存在的視圖的基礎上定義。資料庫中只存放視圖的定義,沒有視圖中的資料,這些資料都存放在原來的表中。視圖不支援輸入記錄的功能建立視圖格式:create [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEW 視圖名 [(屬性清單)]AS SELECT 語句[WITH [CASCADED|LOCAL] CHECK OPTION];註:ALGORITHM是選擇性參數表示視圖選擇的演算法,屬性清單是選擇性參數指定了視圖中各個屬性的名詞,預設情況下與select語句中查詢的屬性相同;WITH CHECK OPTION是選擇性參數表示更新視圖時要保證在該視圖的許可權範圍內。ALGORITHM中undefined選項表示mysql將自動選擇所要使用的演算法;merge選項表示將使用視圖的語句與視圖定義合并起來,使得視圖定義的某一部分取代語句的對應部分;temptable選項表示將視圖的結果存入暫存資料表,然後用暫存資料表執行語句。CASCADED表示更新視圖時要滿足所有相關視圖和表的條件,該參數為預設值;local表示更新視圖時,要滿足該視圖本身的定義的條件即可。未指定屬性清單的情況下視圖的屬性名稱與select語句查詢的屬性名稱相同。注一:建立視圖時最好加上WITH CHECK OPTION參數而且最好加上CASCADED參數。這樣,從視圖上派生出來的新視圖後,更新新視圖需要考慮其父視圖的約束條件。這張方式比較嚴格可以保證資料安全性。注二:建立視圖要有create view的許可權,同時要有select許可權。在mysql資料庫下面的user表中儲存這些許可權資訊,可以使用select語句查詢。select Select_priv,Create_view_priv from mysql.user where user='使用者名稱';一、查看視圖:describe語句或show  create view語句 或show table status語句或information_ schema資料庫下的views表二、修改視圖1、create or replace 語句來修改視圖create or replace [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEW 視圖名 [(屬性清單)]AS SELECT 語句[WITH [CASCADED|LOCAL] CHECK OPTION];註:create or replace語句不僅可以修改已經存在的視圖還可以建立新的視圖。2、alter語句修改視圖alter [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]VIEW 視圖名 [(屬性清單)]AS SELECT 語句[WITH [CASCADED|LOCAL] CHECK OPTION];註:alter只能修改已經存在的視圖。三、更新視圖更新視圖指通過視圖來insert、update、delete表中的資料。視圖更新都會轉換到基本表來更新。更新視圖只能更新許可權範圍內的資料,超出範圍就不能更新了。例:update 視圖名 set name='a';更新後基本表內容也被更新有以下情況不能更新視圖:1、包含sum()、count()、max()、min()等函數2、union、union all、distinct、group by、having等關鍵字。3、常量視圖4、視圖中的select中包含子查詢5、由不可更新的視圖匯出的視圖6、建立視圖時,ALGORITHM為TEMPTABLE類型,該類型是系統暫存資料表是不能更新的。7、視圖對應的表上存在沒有預設值的列,而且該列沒有包含在視圖裡。因為,在更新視圖時,這個沒有預設值的記錄將沒有值插入,也沒有null值插入。資料庫系統是不會允許這樣的情況出現的,會阻止視圖更新。8、WITH [CASCADED|LOCAL] CHECK OPTION也將決定視圖能否更新。local參數表示更新視圖時滿足該視圖本身的定義條件即可;CASCADED參數表示更新視圖時要滿足所有相關視圖和表的條件。沒有指明時預設為CASCADED。四、刪除視圖註:刪除視圖不會影響基本表中的資料格式:drop view [if exists] 視圖名列表 [restrict|cascade]; if exists參數指判斷視圖存在,如果存在則執行不存在則不執行,“視圖名列表”參數表示要刪除的視圖的名稱列表,各視圖名用逗號隔開。一、查詢是否存在drop許可權select drop_priv from mysql.user where user='使用者名稱';

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.