視圖

一、定義

視圖,view 是一種有結構(有行有列),但沒有結果(結構中不真實存放數據)的虛擬表,虛擬表結構的來源不是自己定義,而是從對應的基表中產生(視圖的數據來源)

1.1 創建視圖

1.1.1 基本語法
create view 視圖名 as select 語句;
-- select 語句可以是:普通查詢,連接查詢,聯合查詢,子查詢
1.1.2創建

  • 創建單表視圖 :基表只有一個
CREATE VIEW my_view1 as select * from `c_student` 
CREATE VIEW my_view2 as select * from `c_class` 
  • 創建多表視圖 :基表有多個
CREATE VIEW my_view3 as select s.*,c.c_name,c.room from c_student as s left join c_class as  c on s.c_id = c.id;

1.1.2查看視圖
是指查看視圖的結構,視圖是一張虛擬表。表的所有查看語句都適用于視圖
show tables [like]
desc 視圖名
show create table 視圖名
show create view 視圖名

屏幕快照 2017-08-14 上午10.41.05.png

二、視圖的使用

視圖的使用主要是為了查詢

  • 視圖的查詢
select * from my_view1;
select * from my_view2;
select * from my_view3;
  • 視圖的修改

視圖本身不可以修改,但視圖的來源可以修改
修改視圖:修改視圖本身的來源語句(select語句)
語法

alter view 視圖名字 as 新的 select 語句

示例

alter VIEW my_view1 as select id,name,sex,height,age,c_id from `c_student` 
  • 刪除視圖
drop view 視圖名
  • 視圖的意義
  1. 視圖可以節省SQL語句,將一條復雜的select 語句使用視圖進行保存,以后可以直接對視圖進行操作
    2.數據安全:視圖的操作是主要針對查詢的,如果對視圖進行結構處理
    (刪除),不會影響基表數據
    3.視圖往往是在大項目中使用,而且是多系統,可以為了安全影藏關鍵數據
    4.視圖可以對外提供友好型數據,不同的視圖提供不同的數據,對外好像是專門設計,
    5.視圖可以更好的進行權限控制
  • 視圖的操作

視圖的確可以進行寫操作,但是有很多限制
將數據直接在視圖上進行操作

(1)新增

數據新增是直接對視圖進行數據新增
條件:
1.多表視圖不能新增數據
2.可以向單表視圖插入數據,但是要包括所有不為空的字段

INSERT INTO my_view4 values (11,'阿飛','男',174,24,3)

上面的語句沒有包括學生表中的number字段,但number字段默認不為空,插入失敗

屏幕快照 2017-08-14 下午2.18.41.png

3.視圖是可以向基表插入數據的
(2)刪除
多表視圖不能刪除
單表視圖可以刪除

DELETE FROM my_view2 where id = 10

刪除單表視圖,對應的數據表也將刪除
(3)
多表和單表視圖都可以更新

UPDATE my_view3 set c_id = 1 WHERE id = 8

但如果創建視圖是帶有with option 條件,對應條件里的數據不能修改

CREATE VIEW my_view5 as select * from `c_student` where age <20 with CHECK OPTION  
-- where age <20  年齡小于20歲
-- with CHECK OPTION  屬于該條件的age字段更新操作不能超過20

屏幕快照 2017-08-14 下午2.42.07.png
UPDATE my_view5 set age = 20 where id = 1
屏幕快照 2017-08-14 下午2.43.34.png
UPDATE my_view5 set age = 19 where id = 1
屏幕快照 2017-08-14 下午2.46.08.png

視圖算法

視圖算法:系統對視圖以及外部查詢視圖的select語句的一種解析方式。分為三類:
(1)undefined 未定義(默認),但不是一種實際的算法
(2)template 臨時表算法:系統應該先執行視圖的select 語句后執行外部查詢語句
(3)merge 合并算法:系統應該先將視圖對應的select語句與外部select語句進行合并,然后執行(效率高:系統經常選擇該算法)。
算法指定:
在創建視圖的時候指定
需求:找到每個班里身高最高的學生
示例1:
創建一個視圖,使用默認算法

create VIEW my_view6 AS 
select  * from `c_student` ORDER BY `height` desc;

屏幕快照 2017-08-14 下午3.24.40.png

結果:不符合要求

屏幕快照 2017-08-14 下午3.26.28.png

示例2:使用template 臨時表算法:

create ALGORITHM=TEMPTABLE view  my_view8  as 

select  * from `c_student` ORDER BY `height` desc;
屏幕快照 2017-08-14 下午3.24.40.png
屏幕快照 2017-08-14 下午3.26.28.png

復合條件

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,963評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,348評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,083評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,706評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,442評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,802評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,795評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,983評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,542評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,287評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,486評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,030評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,710評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,116評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,412評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,224評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,462評論 2 378

推薦閱讀更多精彩內容

  • 翻譯自“Collection View Programming Guide for iOS” 0 關于iOS集合視...
    lakerszhy閱讀 3,907評論 1 22
  • 一、視圖(view) 是一種結構(有行有列)但是沒有結果(結構中不真實存放數據)的虛擬表,虛擬表的結構來源不是自己...
    咸魚有夢想呀閱讀 570評論 0 1
  • 前言:當一個大型系統在建立時,會發現,數據庫雖然可以存儲海量的數據,可是一旦數據關系復雜,比如學生表(學號、姓名、...
    JackFrost_fuzhu閱讀 1,188評論 0 2
  • 如果她是唐僧,應該可以把緊箍咒念得很好,不過那肥背塌腰扁平臀,比菜市害了病的豬肉都還松垮地攤在凳子上,要是哪個妖怪...
    Scarlett_Ch閱讀 238評論 1 0
  • 在這個浮躁的世界里,能夠靜下心來學習和工作的人越來越少,現代人的注意力被電視、手機和電腦切割的支離破碎,更...
    九九81難閱讀 1,217評論 3 5