天天看點

視圖

視圖(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 檢查機制
    更新資料時不能插入不滿足視圖限制條件的記錄(插入的資料必須滿足視圖的條件)