1 本質
將select語句的檢索結果用表的形式保存下來,因此有時視圖稱爲假表。這是因爲視圖本身不包含任何數據的,僅僅是從對象表中動態地抽取數據,並將數據組織在一起,外表看起來像一個物理表。
2 作用
將多個物理表中的數據通過視圖動態地組織在一起,用戶可以像使用普通物理表那樣使用它。
3 特徵
(1)可以公開表中特定的行或列,通過視圖進行權限權限管理。
(2)簡化複雜的SQL查詢,將經常使用的連接或子查詢條件定義爲視圖,不僅可以簡化SQL語句,當連接或子查詢條件發生改變時,因爲只用修改視圖的定義,可以大大減少受影響的代碼範圍。
(3)可以限制可插入/更新的值範圍,即使用[WITH CHECK POINT]命令。
4 創建視圖
create view 視圖名(列名,...)as select 語句 [with check point];
即對指定的<select 語句>創建視圖,包含指定列[列名,...]
通常情況下,推薦加with check point ,從而避免發生不必要的錯誤
注意:在創建視圖時select語句中不能包含如下內容:
(1)系統變量/用戶變量的參照
(2)temporary類型的表
(3)from語句中的子查詢
5 定義視圖時最好將所有的視圖名指定爲一個共同的特徵,如[v_]的形式開頭。這時可以使用LIKE關鍵字將所有特徵的表或視圖顯示出來。如show table like ‘v_%’;
6 顯示視圖中所有列的信息
show fields from 視圖名;
7 刪除視圖
drop view 視圖名;
8 對視圖進行插入/更新/刪除操作時,以下幾種條件下不能進行:
(1)視圖的列中含有統計函數的情況下
(2)視圖定義時使用了group by/having語句,distinct語句,union語句的情況下
(3)視圖定義時使用了子查詢的情況下
(4)進行跨越多個表進行數據的變更(插入/更新/刪除)操作
9 視圖是一個非常方便的功能。但是就性能來說並非一個最好的選擇。