視圖

1.爲什麼需要視圖?

在關係數據庫中,將所有的信息放在一個表中管理是非常不合理的。雖然將所有的數據放在一張表中管理起來,對終端用戶來說,可能使用起來比較方便,但是數據可能會重複出現。所以需要對錶進行規範化,將一個信息放在多個表中進行管理。

當我們要查詢表中信息的時候會發現,檢索語句隨着表數量的增大而變的更加複雜,從而給數據庫造成一定的負擔,還容易出現錯誤,效率也比較低。

這個時候我們就需要創建視圖來提高效率。

2.視圖的本質

視圖的本質是將select語句的檢索結果以表的形式保存下來,因此有時視圖稱爲假表(僞表)。

視圖本身是不包含任何數據的,僅僅從對象中動態的抽取數據,並將數據組織在一起,外表看起來像一個物理表。

3.視圖的作用

(1).可以公開表中特定的行或列(控制權限)

可以通過限制用戶對錶的select操作權限,而僅賦予用戶對相應視圖的select操作權限,來達到限制用戶只能讀取表中特定行或列的目的(因爲視圖中抽取的正是表的特定行或列)。

(2).簡化複雜的SQL查詢

將經常使用的連接或子查詢條件定義成視圖,不僅簡化SQL語句,當連接或子查詢條件發生改變時,因爲只用修改視圖的定義,可以大大減少代碼受影響的代碼範圍。

(3).可以限制可插入/可更新的值範圍

在定義視圖時加入【with check option】命令後,在用insert/update命令進行記錄的插入/更新時,數據庫都會進行檢查,不符合視圖定義的數據將被限制插入/更新。

4.視圖的相關語法

(1).創建視圖

以單張表的部分來創建視圖

create view view_name (col_1,col_2...col_n) as select語句【with check option

(2).顯示視圖

show tables;

和顯示錶的命令一樣,所以創建視圖時名字最好以【v_】開頭

show tables like 'v\_%';

顯示視圖內的所有的列信息

show fields from view_name;

(3).查看視圖中的信息

select * from view_name;

(4).插入信息到視圖

insert into view_name values (data_1,'data_2');

(5).創建視圖使用【with check option】命令

在定義視圖時如果指定了【with check option】命令,將不能插入或更新不符合視圖的檢索條件的數據。否則會報錯。

不使用【with check option】命令,限制會變的寬鬆,可能引起不必要的麻煩。建議使用該命令。

(6).刪除視圖

drop view view_name;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章