視圖(View)
概念:
有結(jié)構(gòu)(有行有列),但沒有結(jié)果(結(jié)構(gòu)中不真實存儲數(shù)據(jù))的虛擬的表
虛擬表的結(jié)構(gòu)來源不是自己定義,而是從對應(yīng)的基表中產(chǎn)生(視圖數(shù)據(jù)的來源)
特點:
- 視圖一旦創(chuàng)建,系統(tǒng)會在視圖對應(yīng)的 數(shù)據(jù)庫文件夾下,
創(chuàng)建一個對應(yīng)的結(jié)構(gòu)文件 —— frm文件- 視圖的使用,只是為了簡化查詢,你可以把 視圖當(dāng)作表一樣去使用
- 視圖的執(zhí)行,本質(zhì)就是 執(zhí)行封裝的select語句
語法:
1. 創(chuàng)建視圖:
create view 視圖名稱 as select 語句
本人現(xiàn)在對上述語法中的語句做下說明:
說明:
這個語句可以是一張或多張表的普通查詢,或多表查詢
例如:
創(chuàng)建單表視圖
create view my_v1 as select * from student;
創(chuàng)建多表視圖
create view my_v2 as select student.*,teacher.* from student,teacher where student.id=teacher.id;
(注意:MySQL中視圖不支持封裝子查詢查出來的數(shù)據(jù))
2. 查看視圖:
語法:
- show tables;
查看所有 視圖 或 表- desc 視圖名;
查看指定視圖 的信息- show create view 視圖名;
查看視圖創(chuàng)建語句
3. 刪除視圖:
語法:
drop view 視圖名稱
例如:
drop view my_v1
4. 修改視圖:
視圖本身不可以修改,
但是視圖的來源是可以修改的
其實就是修改select 語句
語法:
alter view 視圖名字 as 新的select語句
例如:
alter view my_v1 as select * from student;
意義:
意義:
- (1)視圖可以節(jié)省SQL語句,
將一條復(fù)雜的查詢語句,使用視圖進(jìn)行保存,
以后可以直接對視圖進(jìn)行操作- (2)數(shù)據(jù)安全,
視圖操作注意是針對查詢語句的,
如果對視圖結(jié)構(gòu)進(jìn)行處理(比如刪除),
不會影響基表的數(shù)據(jù),所以相對來說數(shù)據(jù)比較安全- (3)視圖往往是在大項目中去使用,
而且是多系統(tǒng)中去使用
我可以對外提供一些有用的數(shù)據(jù),隱藏一些關(guān)鍵的數(shù)據(jù)- (4)視圖對外可以提供友好的數(shù)據(jù):
不同的視圖提供不同的數(shù)據(jù),
對外提供的數(shù)據(jù)好像是經(jīng)過專門設(shè)計的一樣- (5)視圖可以更好地進(jìn)行權(quán)限控制
比如對外隱藏我的一些基表的名稱
視圖數(shù)據(jù)的操作:
視圖是可以進(jìn)行數(shù)據(jù)操作的(比如 增,刪,改,視圖中的數(shù)據(jù)),但是有很多限制
視圖插入數(shù)據(jù):
- (1)多表視圖不能插入數(shù)據(jù)
- (2)單表視圖中可以插入數(shù)據(jù)
(如果視圖中字段 沒有基表中不能為空的字段且沒有默認(rèn)值的字段,是插入不成功的)- (3)視圖是可以向基表中插入數(shù)據(jù)的
(視圖的操作是影響基表的)
視圖刪除數(shù)據(jù):
- (1)多表視圖不能刪除數(shù)據(jù)
- (2)單表視圖可以刪除數(shù)據(jù),也會影響到基表
視圖更新數(shù)據(jù):
無論單表視圖,多表視圖都可以更新數(shù)據(jù)
更新限制:
with check option(限制試圖不能被更新)
例如:
create view my_v1 as select * from student where age>30 with check option;
上述sql語句表示視圖數(shù)據(jù)的來源都是年齡大于30的,
其中的 with check option 決定通過視圖更新的時候,
不能將已得到的數(shù)據(jù)age>30的學(xué)生 改成age<30 的
那么若是我們執(zhí)行如下語句:
update my_v1 set age=20 where id=1;
就會報錯 不允許更改改,因為做了限制
那么,本篇博文的知識點在這里就講解完畢了。
(請觀看本人博文 —— 《數(shù)據(jù)庫 —— 專欄總集篇》)