MySQL視圖的建立與使用

學習點微信


    1.什麼是視圖?less

    2.爲何要使用視圖?編輯器

    3.視圖應該怎麼使用呢?函數



1.什麼是視圖?


    視圖是MySQL的一種虛擬表,實際的表咱們能夠看到每一行的數據,而視圖是另外一種形式的表,他能夠將任何的查詢結果變成一種虛擬的表方便下一次進行查詢。


2.爲何要使用視圖?


    1.可重用
學習

    2.簡化複雜的SQLspa

    3.使用表的組成部分而不是整個表.net

    4.保護數據,能夠給用戶授予表的特定部分的訪問權限而不是整個表的訪問權限blog


3.怎麼使用視圖?


      例如以下兩張表,表中能夠看出班級表和學生表兩個表關係是1對多的,外鍵在學生方


  

    假如我如今要查詢班級爲三國演義的全部學生應該怎麼查詢?可能你想到了用內鏈接Inner join 或者外鏈接的Left join或rigth join,而後查詢結果以下所示。


  

    結果顯然意見是沒有錯誤的,張飛和關羽都被查詢出來了.可是你會發現這樣寫重用性太差了,若是我又要查詢水滸傳班那麼又要編寫這麼長的一條兩錶鏈接SQL,而視圖的優勢就在於此可重用性,可讓用戶少寫不少重複的SQL.接下來咱們開始建立視圖並使用視圖來對比一下。


  

    結果能夠看出來視圖建立之後咱們少寫了不少代碼,且重用性也很強,其實視圖就至關於給查詢的結果取了一個別名,且這個別名包含查詢的結果,咱們下一次用的使用直接用別名就好了也就是視圖。


4.視圖更新的注意點


    迄今爲止全部試圖都是和SELECT語句使用的,而後視圖是否能夠更新呢?得視狀況而定.ci

    一般,視圖是可更新的(即,能夠對他們進行INSERT,UPDATE和DELETE)可是更新視圖將更新基表,由於視圖自己沒有數據若是對視圖進行增刪改其實是對基表進行增刪改.get

    可是,並非全部視圖都是可更新的,若是MySQL不能正確地肯定被更新的基數據,則不容許更新,若是視圖定義中有如下操做,則不能更新視圖;   

    1.分組(使用GROUP BY和HAVING)

    2.聯結

    3.子查詢

    4.並

    5.聚合函數

    6.DISTINCT

    7.導出(計算)列








本文分享自微信公衆號 - 大貓的Java筆記(damaoJava)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索