亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

mysql視圖原理與用法實例小結

2024-07-25 19:08:16
字體:
來源:轉載
供稿:網友

本文實例總結了mysql視圖原理與用法。分享給大家供大家參考,具體如下:

一、什么是視圖

視圖是指計算機數據庫中的視圖,是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖并不在數據庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,并且在引用視圖時動態生成。簡單的來說視圖是由其定義結果組成的表;

例子:定一班級表class(ID,name) 學生表 student(id,class_id,name);

當數據表結構很復雜,但我們只關心其中一部分數據的時候就可以使用視圖,定義關心的數據

創建視圖:

復制代碼 代碼如下:
create view v_stu as select  c.name as c_name ,s.name as stu_name from student  s,class  c where c.id = s.class_id

 

查詢視圖 v_stu

select * from v_stu

 

c_name stu_name
wu 一班
li 二班

 

二、為什么使用視圖

1.安全性。一般是這樣做的:創建一個視圖,定義好該視圖所操作的數據。之后將用戶權限與視圖綁定。這樣的方式是使用到

了一個特性:grant語句可以針對視圖進行授予權限。

2.查詢性能提高。

3.有靈活性的功能需求后,需要改動表的結構而導致工作量比較大。那么可以使用虛擬表的形式達到少修改的效果。

這是在實際開發中比較有用的

例子:假如因為某種需要,a表與b表需要進行合并起來組成一個新的表c。最后a表與b表都不會存在了。而由于原來程序中編寫sql分別是基于a表與b表查詢的,這就意味著需要重新編寫大量的sql(改成向c表去操作數據)。而通過視圖就可以做到不修改。定義兩個視圖名字還是原來的表名a和b。a、b視圖完成從c表中取出內容。

說明:使用這樣的解決方式,基于對視圖的細節了解越詳細越好。因為使用視圖還是與使用表的語法上沒區別。比如視圖名a,那么查詢還是"select * from a"。

4.復雜的查詢需求??梢赃M行問題分解,然后將創建多個視圖獲取數據。將視圖聯合起來就能得到需要的結果了。

視圖的工作機制:當調用視圖的時候,才會執行視圖中的sql,進行取數據操作。視圖的內容沒有存儲,而是在視圖被引用的時候才派生出數據。這樣不會占用空間,由于是即時引用,視圖的內容總是與真實表的內容是一致的。視圖這樣設計有什么好處?節省空間,內容是總是一致的話,那么我們不需要維護視圖的內容,維護好真實表的內容,就可以保證視圖的完整性了。

三、視圖的執行方式

視圖中是沒有保存真實的數據的,只是引用了真實表中的數據,其引用的數據有其定義決定,當我們進行查詢視圖其實是從定義中取數據;

MySQL 中會有infomation_schema 這么一個數據庫,它是mysql自帶的一個數據庫,存儲mysql數據庫的一些元數據,所謂的元數據是指的是mysql的表信息。視圖信息、列信息等。簡單的說就相當于mysql數據庫的一個目錄。所有的視圖在views 表中都有存儲說明;從這里我們可以看出mysql 的工作機制;

select * from v_stu;

v_stu也可以是一個表名,由于視圖和表的物理結構不同,表中可以查出真實的數據,而視圖需要查找到是定義,從而得到需要的數據,我們怎么知道v_stu是一個視圖呢?是因為有一個查看目錄的例程在做這件事。

視圖機制:

視圖處理有兩種機制,替換式和具化式;

① 替換式:操作視圖時,視圖名直接被視圖定義給替換掉,結果就變成select * from (select  c.name as c_name ,s.name as stu_name from student  s,class  c where c.id = s.class_id),在提交給mysql執行;

② 具化式:mysql先得到了視圖執行的結果,該結果形成一個中間結果暫時存在內存中。之后,外面的select語句就調用了這些中間結果(臨時表)。

看起來都是要得到結果,形式上有區別,好像沒體會到本質上的區別。兩種方式又有什么樣的不同呢?

替換方式,將視圖公式替換后,當成一個整體sql進行處理了。具體化方式,先處理視圖結果,后處理外面的查詢需求。

替換方式可以總結為,先準備,后執行。

具體化方式總結理解為,分開處理。

哪種方式好?不知道。mysql會自己確定使用哪種方式進行處理的。自己在定義視圖的時候也可以指定使用何種方式。

例子:

語法:

CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}]VIEW 視圖名 [(屬性清單)]AS SELECT 語句[WITH [CASCADED|LOCAL] CHECK OPTION];

ALGORITHM有三個參數分別是:merge、TEMPTABLE、UNDEFINED

merge:處理方式替換式,可以進行更新真實表中的數據;

TEMPTABLE:具化式,由于數據存儲在臨時表中,所以不可以進行更新操作!

當你的參數定義是UNDEFINED(沒有定義ALGORITHM參數)。mysql更傾向于選擇替換方式。是因為它更加有效。

例子:

create ALGORITHM=merge view v_stu as select c.name as c_name ,s.name as stu_name from student s,class c where c.id = s.class_idupdate v_stu set c_name = '' where c_name ='';

執行成功

create ALGORITHM=TEMPTABLEview v_stu as select c.name as c_name ,s.name as stu_name from student s,class c where c.id = s.class_id

執行失敗,不可以更新!

 

希望本文所述對大家MySQL數據庫計有所幫助。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国内精品一国内精品| 91天堂在线观看| 成人免费视频a| 久久在精品线影院精品国产| 成人天堂噜噜噜| 久久国产精品久久久久久久久久| 午夜免费日韩视频| 国产v综合ⅴ日韩v欧美大片| 久久精品91久久久久久再现| 亚洲电影免费观看高清完整版在线观看| 亚洲一区二区三区在线免费观看| 国产精品久久久久久久久久久久| 国产精品一区二区久久| 日韩成人激情在线| 亚洲国产精品成人一区二区| 日韩在线视频免费观看高清中文| 欧美极品在线视频| 91免费观看网站| 国产精品永久在线| 丝袜情趣国产精品| 亚洲黄页网在线观看| 日韩中文理论片| 亚洲欧美福利视频| 久久不射热爱视频精品| 国产精品第1页| 欧美丝袜一区二区| 亚洲国产美女精品久久久久∴| 亚洲成人免费在线视频| 亚洲黄色免费三级| 国产精品女主播| 欧美韩国理论所午夜片917电影| 91久热免费在线视频| 久久99精品国产99久久6尤物| 成人av资源在线播放| 高跟丝袜一区二区三区| 国产亚洲精品美女久久久| 国产精品成人品| 精品国产一区二区三区久久狼5月| 色av中文字幕一区| 久久久亚洲欧洲日产国码aⅴ| 亚洲女同性videos| 亚洲国产精品字幕| 欧美另类老女人| 成人免费视频xnxx.com| 日韩精品有码在线观看| 黄色成人在线免费| 一本色道久久88综合日韩精品| 精品久久久999| 午夜免费日韩视频| 欧美老女人在线视频| 在线亚洲欧美视频| 国产精品亚洲一区二区三区| 国产日韩在线看片| 亚洲免费视频观看| 亚洲精品一区二三区不卡| 国产v综合v亚洲欧美久久| 欧美性videos高清精品| 国产91|九色| 久久精品亚洲94久久精品| 岛国av一区二区三区| 国产欧美久久一区二区| 97超级碰在线看视频免费在线看| 亚洲男人天堂手机在线| 欧美激情亚洲国产| 国产偷国产偷亚洲清高网站| 97视频在线观看免费| 黄色精品在线看| 欧美劲爆第一页| 国产视频丨精品|在线观看| 久久精品电影网| 欧美视频专区一二在线观看| 欧美一性一乱一交一视频| 国产精品久久久久国产a级| 亚洲欧美日韩在线高清直播| 精品中文字幕乱| 亚洲国产97在线精品一区| 亚洲人成电影在线观看天堂色| 久久久久女教师免费一区| 久久久精品电影| 精品人伦一区二区三区蜜桃网站| 91在线直播亚洲| 欧美在线视频观看| 国产a级全部精品| 欧美性猛交xxxx免费看漫画| 色婷婷久久一区二区| 成人黄色在线观看| 成人黄色短视频在线观看| 97人人做人人爱| 国内精品视频在线| 日韩av黄色在线观看| 911国产网站尤物在线观看| 日韩一区二区久久久| 亚洲欧美另类国产| 国产中文欧美精品| 伊人精品在线观看| 一本色道久久88综合亚洲精品ⅰ| 久久久久久中文字幕| 中文字幕国产亚洲2019| 精品国产一区二区三区久久狼5月| 欧美一级大片在线免费观看| 久久久久久av| 亚洲免费小视频| 精品亚洲va在线va天堂资源站| 欧美麻豆久久久久久中文| 亚洲国产精品va| 亚洲va欧美va在线观看| 亚洲精品一区二区三区不| 中文字幕精品国产| 亚洲区一区二区| 欧美激情一区二区久久久| 亚洲国产成人久久综合| 51ⅴ精品国产91久久久久久| 91夜夜未满十八勿入爽爽影院| 这里只有精品在线观看| 亚洲图片在区色| 国语自产偷拍精品视频偷| 久久69精品久久久久久久电影好| 亚洲加勒比久久88色综合| 成人女保姆的销魂服务| 欧美大胆在线视频| 久久成人一区二区| 国内精品一区二区三区| www.xxxx欧美| 欧美一区二区视频97| 日本午夜精品理论片a级appf发布| 一区二区欧美在线| 中文字幕欧美精品日韩中文字幕| 中文字幕日韩综合av| 91精品国产网站| 欧美在线视频一区二区| 日韩国产高清污视频在线观看| 97涩涩爰在线观看亚洲| 韩国国内大量揄拍精品视频| 精品亚洲aⅴ在线观看| 色哟哟亚洲精品一区二区| 欧美精品激情视频| 91精品国产777在线观看| 精品一区二区三区四区在线| 2018中文字幕一区二区三区| 亚洲va国产va天堂va久久| 26uuu亚洲伊人春色| 日本乱人伦a精品| 日韩av在线看| 91深夜福利视频| 久久欧美在线电影| 欧美性猛交xxxx偷拍洗澡| 在线观看日韩www视频免费| 亚洲日本欧美中文幕| 美女久久久久久久| 日韩av在线一区| 国产a∨精品一区二区三区不卡| 成人精品视频99在线观看免费| 91夜夜揉人人捏人人添红杏| 日韩在线观看免费高清完整版| 亚洲日本aⅴ片在线观看香蕉| 影音先锋欧美精品| 国产精品视频一区国模私拍| 亚洲精美色品网站| 亚洲色图第一页| 欧美日韩一区二区三区| 欧美黑人性猛交| 精品亚洲国产成av人片传媒| 色偷偷88888欧美精品久久久| 日韩一区二区三区在线播放|