視圖(view)是一張虛拟的表,其内容由查詢定義;簡單的說視圖就是由select結果集組成的表
一、視圖的作用
- 簡單:對使用者來說已經是過濾好的複合條件的結果集
- 安全:通過視圖使使用者隻能通路他們被允許查詢的結果集
- 資料的獨立性:一旦視圖的結構确定了,源表增加列對視圖沒有影響;源表修改列名,則可以通過修改視圖來解決,不會造成對通路者的影響。
二、視圖的操作
1.建立視圖
create view emp_view
as(select * from emp where salary > 2000);
2.使用視圖
視圖一旦建立完畢,就可以像一個普通表那樣使用,視圖主要用來查詢
select * from emp_view;
3.視圖的更改
視圖存在的情況下可對視圖進行修改,視圖不在的情況下建立新視圖
create or replace view view_name as select語句;
4.drop删除視圖
删除視圖時,隻能删除視圖的定義,不會删除資料,也就是說不動基表:
drop view v_student;
三、視圖查詢語句的處理
CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 視圖名 [(屬性清單)]
AS SELECT 語句
[WITH [CASCADED|LOCAL] CHECK OPTION];
ALGORITHM 視圖機制
有三個參數分别是:
merge:替換式,可以進行更新真實表中的資料
TEMPTABLE:具化式,由于資料存儲在臨時表中,是以不可以進行更新操作!
UNDEFINED(沒有定義ALGORITHM參數)。mysql更傾向于選擇替換方式。是因為它更加有效。
WITH CHECK OPTION 檢查機制
更新資料時不能插入不滿足視圖限制條件的記錄(插入的資料必須滿足視圖的條件)