在查詢中 , 我們經(jīng)常把查詢結(jié)果?當(dāng)成臨時(shí)表來看 .
View 是什么 ??View 可以看一張?zhí)摂M表 .? 是表通過某種運(yùn)算得到的一個(gè)投影 .
既然視圖只是表的某種查詢的投影 , 所以主要步驟在于查詢表上 . 查詢的結(jié)果命名為視圖就可以了 .
視圖與表的關(guān)系
視圖是表的查詢結(jié)果 , 自然表的數(shù)據(jù)改變了 , 影響視圖的結(jié)果 .
?
視圖改變了呢 ?
0:? 視圖增刪改也會(huì)影響表
1:? 但是 , 視圖并是總是能增刪改的 .
?
視圖某種情況下 , 是可以修改的 .
要求 :? 視圖的數(shù)據(jù)和表的數(shù)據(jù)? 11 對(duì)應(yīng) .? 就像函數(shù)的映射 .
表 --> 推出視圖對(duì)應(yīng)的數(shù)據(jù)
視圖 --> 推出表對(duì)應(yīng)的數(shù)據(jù)
視圖的定義 :
視圖是由查詢結(jié)果形成的一張?zhí)摂M表 . 是 sql 查詢結(jié)果
?
視圖的創(chuàng)建語法 :
Create?view? 視圖名? as??select? 語句 ;
?
視圖的刪除語法 :
Drop?view? 視圖名
?
視圖的修改
Alter?view? 視圖名? as?select?xxxxxx
?
?
為什么要視圖 ?
答 :1: 可以簡化查詢
?
2:? 可以進(jìn)行權(quán)限控制
把表的權(quán)限封閉 , 但是開放相應(yīng)的視圖權(quán)限 , 視圖里只開放部分?jǐn)?shù)據(jù)
?
3:? 大數(shù)據(jù)分表時(shí)可以用到
比如 , 表的行數(shù)超過 200 萬行時(shí) , 就會(huì)變慢 ,
可以把一張的表的數(shù)據(jù)拆成 4 張表來存放 .?
視圖的 algorithm
Algorithm?=?merge/?temptable/?undefined
Merge:? 當(dāng)引用視圖時(shí) , 引用視圖的語句與定義視圖的語句合并 .
Temptable: 當(dāng)引用視圖時(shí) , 根據(jù)視圖的創(chuàng)建語句建立一個(gè)臨時(shí)表
Undefined: 未定義 , 自動(dòng) , 讓系統(tǒng)幫你選 .
?
Merge, 意味著視圖只是一個(gè)規(guī)則 , 語句規(guī)則 ,? 當(dāng)查詢視圖時(shí) ,
把查詢視圖的語句 ( 比如 where 那些 ) 與創(chuàng)建時(shí)的語句 where 子句等合并 , 分析 .
形成一條 select? 語句 .
例 :? 創(chuàng)建視圖的語句 :
mysql>?create?view?g2?as?select?goods_id,cat_id,goods_name,shop_price?from?goods?where?shop_price>2000
查詢視圖的語句 :
select?*?from?g2??where?shop_price?<?3000;
?
最終執(zhí)行的語句 :
select?goods_id,cat_id,goods_name,shop_price?from?goods?where?shop_price?>?2000?and?shop_price?<?3000
?
而 temptable 是根據(jù)創(chuàng)建語句瞬間創(chuàng)建一張臨時(shí)表 ,
然后查詢視圖的語句從該臨時(shí)表查數(shù)據(jù) .
create?algorethm=temptable?view?g2?as?select?goods_id,cat_id,goods_name,shop_price?from?goods?where?shop_price?>?2000
查詢視圖的語句 :
?select?*?from?g2??where?shop_price?<?3000;
?
最終執(zhí)行的 2 句話 :? 取數(shù)據(jù)并放在臨時(shí)表 , 然后去查臨時(shí)表 .
Select??goods_id,cat_id,goods_name,shop_price?from?goods?where?shop_price?>?2000;
========>?temptable
?
再次查臨時(shí)表
Select?*?from?temptable?where?shop_price<?3000
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
