MYSQL視圖介紹

視圖的概念

  • 視圖是一種虛擬的表公黑,具有和物理表相同的功能邑商。
  • 視圖通常是有一個表或者多個表的行或列的子集凡蚜。
  • 可以對視圖進行增,改朝蜘,查,操作
  • 對視圖的修改不影響基本表
  • 相比多表查詢谱醇,它使得獲取數(shù)據(jù)更容易

視圖的優(yōu)點

  • 視圖能夠簡化用戶的操作暇仲,用戶完全不需要關(guān)心后面對應(yīng)的表的結(jié)構(gòu)、關(guān)聯(lián)條件和篩選條件
  • 視圖使用戶能以多種角度看待同一數(shù)據(jù)
  • 視圖為數(shù)據(jù)庫提供了一定程度的邏輯獨立性
  • 視圖能夠?qū)C密數(shù)據(jù)提供安全保護奈附,用戶只能訪問被允許查詢的結(jié)果集
  • 視圖的結(jié)構(gòu)確定后,可以屏蔽表結(jié)構(gòu)變化對用戶的影響桅狠,源表增加列對視圖沒有影響

視圖的操作

視圖的創(chuàng)建

基本格式:

CREATE [OR REPLACE] 
  [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]  
  [DEFINER = { user | CURRENT_USER }]  
  [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
   [WITH [CASCADED | LOCAL] CHECK OPTION]

釋義:

  1. OR REPLACE:表示替換已有視圖

  2. ALGORITHM選項:選擇在處理定義視圖的select語句中使用的方法

  • UNDEFINED:MySQL將自動選擇所要使用的算法
  • MERGE:將視圖的語句與視圖定義合并起來,使得視圖定義的某一部分取代語句的對應(yīng)部分
  • TEMPTABLE:將視圖的結(jié)果存入臨時表轿秧,然后使用臨時表執(zhí)行語句
  • 缺省ALGORITHM選項等同于ALGORITHM = UNDEFINED
  1. DEFINER選項:指出誰是視圖的創(chuàng)建者或定義者
  • definer= '用戶名'@'登錄主機'
  • 如果不指定該選項,則創(chuàng)建視圖的用戶就是定義者菇篡,指定關(guān)鍵字CURRENT_USER(當(dāng)前用戶)和不指定該選項效果相同
  1. SQL SECURITY選項:要查詢一個視圖,首先必須要具有對視圖的select權(quán)限驱还。
  • SQL SECURITY DEFINER:定義(創(chuàng)建)視圖的用戶必須對視圖所訪問的表具有select權(quán)限,也就是說將來其他用戶訪問表的時候以定義者的身份议蟆,此時其他用戶并沒有訪問權(quán)限。
  • SQL SECURITY INVOKER:訪問視圖的用戶必須對視圖所訪問的表具有select權(quán)限咐容。
  • 缺省SQL SECURITY選項等同于SQL SECURITY DEFINER
  1. select_statement:表示select語句

  2. [WITH [CASCADED | LOCAL] CHECK OPTION]:對視圖所做的DML操作的結(jié)果,不能違反視圖的WHERE條件的限制,保證更新視圖是在該視圖的權(quán)限范圍之內(nèi)戳粒。

  • cascade是默認(rèn)值,表示更新視圖的時候蔚约,要滿足檢查所有的視圖和表的相關(guān)條件

  • local表示更新視圖的時候奄妨,只檢查將要更新的視圖本身,對嵌套視圖(定義在另一個視圖的上面的視圖)不檢查其底層的視圖

建議:推薦使用 WHIT [CASCADED|LOCAL] CHECK OPTION選項苹祟,可以保證數(shù)據(jù)的安全性

查看視圖

  • 使用SHOW CREATE VIEW view_name; 查看視圖定義
  • 像一個普通表那樣使用 SELECT 查詢視圖內(nèi)容
  • 有關(guān)視圖的信息記錄在information_schema數(shù)據(jù)庫中的views表中
    select * from information_schema.views where TABLE_NAME=view_name;

視圖的更改

  • CREATE OR REPLACE VIEW語句修改視圖定義
  • ALTER語句修改視圖
ALTER
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
VIEW view_name [(column_list)]
AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]
  • 更新視圖中數(shù)據(jù) (DML操作)
    因為視圖本身沒有數(shù)據(jù),對視圖進行的數(shù)據(jù)操作最終都體現(xiàn)在基表(用來創(chuàng)建視圖的表叫做基表)中苔咪,但是,并不是所有的視圖都可以做DML操作团赏。

下面情形中不能做DML操作:

  • select子句中包含distinct
  • select子句中包含組函數(shù)
  • select語句中包含group by子句
  • select語句中包含order by子句
  • select語句中包含union 、union all等集合運算符
  • where子句中包含相關(guān)子查詢
  • from子句中包含多個表
  • 如果視圖中有計算列舔清,則不能更新
  • 如果基表中有某個具有非空約束的列未出現(xiàn)在視圖定義中曲初,則不能做insert操作

刪除視圖

刪除視圖時,只能刪除視圖的定義杯聚,不會刪除數(shù)據(jù),也就是說不動基表幌绍。
使用drop 刪除視圖,語法和刪除表類型:

DROP VIEW [IF EXISTS]   
view_name [, view_name] ...

<END>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末傀广,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伪冰,更是在濱河造成了極大的恐慌,老刑警劉巖贮聂,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吓懈,居然都是意外死亡,警方通過查閱死者的電腦和手機骄瓣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榕栏,“玉大人,你說我怎么就攤上這事扒磁。” “怎么了妨托?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兰伤。 經(jīng)常有香客問我,道長敦腔,這世上最難降的妖魔是什么均澳? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮找前,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躺盛。我一直安慰自己,他們只是感情好槽惫,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著界斜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锄蹂。 梳的紋絲不亂的頭發(fā)上水慨,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天得糜,我揣著相機與錄音晰洒,去河邊找鬼朝抖。 笑死谍珊,一個胖子當(dāng)著我的面吹牛治宣,可吹牛的內(nèi)容都是我干的砌滞。 我是一名探鬼主播侮邀,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贝润,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了打掘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤尊蚁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后横朋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年耐版,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片压汪。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖止剖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情穿香,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布皮获,位于F島的核電站,受9級特大地震影響洒宝,放射性物質(zhì)發(fā)生泄漏购公。R本人自食惡果不足惜雁歌,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靠瞎。 院中可真熱鬧比庄,春花似錦乏盐、人聲如沸佳窑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽法竞。三九已至耙厚,卻和暖如春岔霸,著一層夾襖步出監(jiān)牢的瞬間薛躬,已是汗流浹背呆细。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工型宝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趴酣。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像岖寞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仗谆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

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

  • 1. SQL 簡介 SQL 的目標(biāo) 理想情況下,數(shù)據(jù)庫語言應(yīng)允許用戶: 建立數(shù)據(jù)庫和關(guān)系結(jié)構(gòu) 完成基本數(shù)據(jù)管理任務(wù)...
    板藍(lán)根plank閱讀 2,347評論 0 11
  • 第三課: 排序檢索數(shù)據(jù) distinct關(guān)鍵字:distinct 列名1隶垮,列名2,列名3DISTINCT 關(guān)鍵字會...
    VictorBXv閱讀 1,475評論 0 8
  • 表 存儲在表中的數(shù)據(jù)是同一種類型的數(shù)據(jù)或清單勉耀。 數(shù)據(jù)庫中的表有為一個名字來標(biāo)識自己。 表具有一些特性蹋偏,這些特性定義...
    蛐蛐囍閱讀 1,314評論 0 7
  • 手動不易,轉(zhuǎn)發(fā)請注明出處 --Trance 數(shù)據(jù)庫系統(tǒng)命令: (1).查看存儲過程狀態(tài):show pro...
    Trance_b54c閱讀 1,663評論 0 8
  • 暖烘烘的太陽照到大地上暖侨,大地說:“我想要件新衣裳崇渗∽侄海” 地里的黃牛聽到說:“用我的犁給你量量尺寸宅广『簦”風(fēng)說:“我來幫你...
    月光松鼠閱讀 808評論 3 13