sql 視圖

view
    直接對某張表的操做,就是在對數據庫系統的邏輯模型層的操做。但讓全部用戶都看到整個邏輯模型是不合適的。出於安全的考慮,如會隱藏某個屬性。這時就須要這種‘虛表’,它向用戶透露一部分的數據,它不屬於邏輯模型層的。咱們稱它爲視圖。視圖並非預先計算並存儲的,而是在使用的時候才經過執行查詢被計算出來數據庫

定義一個視圖:安全

    create view V as <查詢語句> spa

create view stuent_view as
	select a.*,b.name as gradeName  from 
		student a  join 
		grade b on a.gradeId = b.id 
	where a.age>20;

存在的視圖也能夠用來定義另外一個視圖code


視圖維護
    爲保證視圖中數據的一致性,必需有一些的策略對其進行維護select

    第一種,數據庫系統僅僅只是存儲視圖的查詢表達式。當真正的用到該視圖時纔去執行這個查詢。這種方式保證了數據的一致,可是若是頻繁使用該視圖,這種方式就不如直接存儲視圖內容來的划算。數據

    第二種,數據庫系統直接存儲視圖的內容。爲保證數據的一致性,就要求在邏輯視圖更新後,相應的視圖也要即時的更新。同時暴露的問題就是,若是邏輯層更新頻繁,那麼視圖也會跟着更新。最差的狀況是,你還不怎麼用這個視圖。查詢

    第三種,存儲內容後按期的更新視圖。這種彷佛綜合上面兩種方案。但有個致命的點是,你無法保證視圖中的數據是最新的。view

    使用哪一種方式,不只要根據狀況來定。並且最重要的是,數據庫系統是否支持你使用以上三種的維護方式vi


視圖更新
    視圖是一張」虛表「,想要這張表支持增刪改,倒是一個重大的問題。至少目前不能作到co

相關文章
相關標籤/搜索