什么是視圖
? ? 視圖(View)是一種虛擬存在的表濒翻。其內(nèi)容與真實(shí)的表相似夕玩,包含一系列帶有名稱的列和行數(shù)據(jù)坤按。但是視圖并不在數(shù)據(jù)庫中以存儲(chǔ)的數(shù)據(jù)的形式存在。行和列的數(shù)據(jù)來自定義視圖時(shí)查詢所引用的基本表盲厌,并且在具體引用視圖時(shí)動(dòng)態(tài)生成。
視圖的特點(diǎn)如下:
<1>視圖的列可以來自不同的表祸泪,是表的抽象和在邏輯意義上建立的新關(guān)系吗浩;
<2>視圖是由基本表(實(shí)表)產(chǎn)生的表(虛表);
<3>視圖的建立和刪除不影響基本表没隘;
<4>對(duì)視圖內(nèi)容的更新(增刪改)直接影響基本表懂扼;
<5>當(dāng)視圖來自多個(gè)基本表時(shí),不允許添加和刪除數(shù)據(jù)右蒲。
為什么使用視圖
1阀湿、安全:使用視圖用戶只能訪問到他們有權(quán)限訪問的數(shù)據(jù)(具體到每一列),對(duì)表的權(quán)限管理不能具體到每一列瑰妄。
2陷嘴、簡(jiǎn)單:使用視圖不用關(guān)心表的結(jié)構(gòu)、關(guān)聯(lián)條件和篩選條件间坐,因?yàn)樗莿?dòng)態(tài)生成的灾挨,在定義視圖的時(shí)候已經(jīng)對(duì)相關(guān)語句進(jìn)行了定義。
3竹宋、數(shù)據(jù)獨(dú)立:視圖可以屏蔽表結(jié)構(gòu)變化對(duì)用戶的影響劳澄,當(dāng)表結(jié)構(gòu)變化時(shí),修改視圖就好蜈七,不用修改業(yè)務(wù)代碼秒拔,前提是業(yè)務(wù)代碼查詢的是視圖,不是對(duì)表進(jìn)行直接查詢飒硅。
創(chuàng)建或修改視圖
create view 視圖名 as 查詢語句? with? cascaded | local? check option ;
注:with cascaded | local check option可以沒有砂缩,默認(rèn)是with cascaded check option
create or replace view user_view as select * from user ;
注:CREATE VIEW代碼段創(chuàng)建一個(gè)新的視圖,或是在使用了OR REPLACE選項(xiàng)時(shí)嘗試替換一個(gè)已經(jīng)存在的視圖狡相。
如果視圖view_name不存在梯轻,CREATE OR REPLACE VIEW等同于CREATE VIEW,如果存在則等同于ALTER VIEW尽棕。
查看視圖
SHOW TABLES;
查看視圖的定義:
SHOW CREATE VIEW view_name;
刪除視圖
語句:drop view? if exists 視圖名1,視圖名2;
drop view my_view3;
修改視圖
方式一:先刪除再創(chuàng)建喳挑,使用語句CREATE OR REPLACE或是分步驟先DROP然后CREATE;
方式二:使用ALTER VIEW: ALTER VIEW view_name as select_statement;
查看視圖狀態(tài)
show view tatus;