(8)mysql 中的檢視

林灣村龍貓發表於2017-01-18

概念

  檢視是一種虛擬存在的表,對於使用檢視的使用者來說,基本上跟使用正常的表一樣。檢視在資料庫中是不存在的,檢視中的資料是動態生成的。
  檢視相對於普通表的優勢:

  • 簡單:使用檢視不需要關心後面的表的對應結構條件,對於使用者來說,檢視是過濾好的結果集。
  • 安全:使用者只能訪問他們被允許查詢的結果集。
  • 資料獨立:一旦檢視結構確定,對實際表的改變對檢視使用者是沒有影響的。

檢視操作

檢視操作分為建立檢視修改檢視刪除檢視檢視檢視定義

建立檢視,修改檢視

#建立檢視
create [or replace] [algorithm={undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with[cascaded|local] check option]

# 修改檢視
alter [algorithm={undefined|merge|temptable}]
view view_name[(column_list)]
as select_statement
[with[cascaded|local] check option]複製程式碼

舉例:

create view view_test as
select t1.sid,t1.username,t2.department
from test1 t1 left join test2 t2 on t1.sid=t2.sid;複製程式碼

(8)mysql 中的檢視
建立檢視

說明:

  • from關鍵字後面不能包含子查詢;
  • 不能更新的檢視:包含聚合函式/group/distinct/having/union,常量檢視,select中包含子查詢,jion,from一個不能更新的檢視,where中子查詢引用from子句中的表。
  • with[cascaded|local] check option 絕對是否允許更新資料使記錄不再滿足檢視條件。其中local-只需滿足本檢視條件就可以更新cascaded-必須滿足所有針對該檢視的所有檢視的條件才可以更新。預設為cascaded。

檢視檢視資料

同普通表

select * from view_test;複製程式碼

(8)mysql 中的檢視
檢視檢視資料

刪除檢視

#刪除檢視
drop view [if exists] view_name [,view_name2]...[restrict|cascade]

#舉例
drop view view_test;複製程式碼

檢視檢視狀態

從MySQL5.1開始,使用show tables命令的時候不僅顯示錶名還顯示檢視名稱。

相關文章