【數(shù)據(jù)庫】視圖 View

視圖(View)

概念

有結(jié)構(gòu)(有行有列),但沒有結(jié)果(結(jié)構(gòu)中不真實存儲數(shù)據(jù))的虛擬的表
虛擬表的結(jié)構(gòu)來源不是自己定義,而是從對應(yīng)的基表中產(chǎn)生(視圖數(shù)據(jù)的來源)

特點

  1. 視圖一旦創(chuàng)建,系統(tǒng)會在視圖對應(yīng)的 數(shù)據(jù)庫文件夾下,
    創(chuàng)建一個對應(yīng)的結(jié)構(gòu)文件 —— frm文件
  2. 視圖的使用,只是為了簡化查詢,你可以把 視圖當(dāng)作表一樣去使用
  3. 視圖的執(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ù)庫 —— 專欄總集篇》)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、視圖的定義及作用 定義視圖是從若干基本表和(或)其他視圖構(gòu)造出來的表。 在創(chuàng)建一個視圖時,只是存放的視圖的定義...
    圣賢與無賴閱讀 678評論 0 0
  • 1. 引入 視圖是一張?zhí)摂M表,它表示一張表的部分或多張表的綜合的結(jié)構(gòu)。 視圖僅僅是表結(jié)構(gòu),沒有表數(shù)據(jù)。視圖的結(jié)構(gòu)和...
    泡泡龍吐泡泡閱讀 2,288評論 0 2
  • 作者:燁竹 數(shù)據(jù)庫的基本操作 登陸MySQL數(shù)據(jù)庫服務(wù):mysql -h服務(wù)器地址 -P端口號 -u用戶名 ...
    DragonRat閱讀 1,392評論 0 7
  • 今天,在中華書局公眾號上,看到首屆宋云彬古箱整理獎的消息,評出《史記》校注本等四本書為圖書獎,中華書局一編輯獲編輯...
    黃葉村人閱讀 727評論 2 2
  • 一、英雄·匯聚 如所有的故事一樣,我們的故事也緣于38個人的相聚。 2017年8月,經(jīng)歷升入高段的重新分班后全新的...
    張毛麗閱讀 831評論 0 1