一、概述
Mysql 5.0 版本後開始引入視圖。視圖本身是一個虛擬表,不存放任何數據。在使用 sql 語句訪問視圖的時候,他返回的數據都是在查詢過程中從其他表動態生成的。
二、使用視圖
1、創建視圖
CREATE VIEW comic_view as SELECT comic_id,name,pen_name from comic;
2、創建之後,我們就可以像使用正常數據表一樣使用視圖。
SELECT comic_id,name,pen_name from comic_view limit 100;
三、可更新視圖
可更新視圖是指可以通過更新這個視圖來更新視圖涉及的相關表。只要指定了合適的條件,就可以更新、刪除、甚至想視圖中寫入數據。
如果視圖定義中包含了Group By、UNION、聚合函數、以及其他一些特殊情況,就不能被更新。
更新視圖的查詢也可以是一個關聯語句,但是有一個限制,被更新的列必須在同一個表中。另外,所有使用臨時表算法實現的視圖都無法被更新。(有合併算法和臨時表算法兩種算法)
四、視圖優缺點
1、優點:
第一個顯著優點就是它簡化了操作。此時我們完全不用關心視圖是怎麼處理數據的,我們只需要知道如何使用這個結果集即可,視圖相當於一箇中間層。
第二個顯著優點就是它更加安全。比如我們可以讓用戶有權去訪問某個視圖,但是不能訪問原表,這樣就可以起到保護原表中某些數據的作用。另外,權限是無法細緻到某一個列的,通過視圖,則很容易實現。
第三個顯著優點就是降低耦合。假如我們以後要修改原表的結構,那麼我們可以通過修改視圖的定義即可,而不用修改應用程序,對訪問者是不會造成影響的,一般來說,這樣代價會更小。
2、缺點:
(1)實際數據表的表結構修改了,則必須手動修改相關視圖。
(2)應對大數據時,可能會降低性能。
注:如果使用的數據庫類型是Mysql,因爲 Mysql 目前並不支持物化視圖,所以針對分佈式、大數據的程序,都不建議使用視圖。