MySQL - 視圖

一、概述

  Mysql 5.0 版本後開始引入視圖。視圖本身是一個虛擬表,不存放任何數據。在使用 sql 語句訪問視圖的時候,他返回的數據都是在查詢過程中從其他表動態生成的。

 
二、使用視圖
 

1、創建視圖

CREATE VIEW comic_view as SELECT comic_id,name,pen_name from comic;

 
2、創建之後,我們就可以像使用正常數據表一樣使用視圖。

SELECT comic_id,name,pen_name from comic_view limit 100;

 

 
三、可更新視圖

  可更新視圖是指可以通過更新這個視圖來更新視圖涉及的相關表。只要指定了合適的條件,就可以更新、刪除、甚至想視圖中寫入數據。

  如果視圖定義中包含了Group By、UNION、聚合函數、以及其他一些特殊情況,就不能被更新。

  更新視圖的查詢也可以是一個關聯語句,但是有一個限制,被更新的列必須在同一個表中。另外,所有使用臨時表算法實現的視圖都無法被更新。(有合併算法和臨時表算法兩種算法)

 
四、視圖優缺點

1、優點:

  第一個顯著優點就是它簡化了操作。此時我們完全不用關心視圖是怎麼處理數據的,我們只需要知道如何使用這個結果集即可,視圖相當於一箇中間層。

  第二個顯著優點就是它更加安全。比如我們可以讓用戶有權去訪問某個視圖,但是不能訪問原表,這樣就可以起到保護原表中某些數據的作用。另外,權限是無法細緻到某一個列的,通過視圖,則很容易實現。

  第三個顯著優點就是降低耦合。假如我們以後要修改原表的結構,那麼我們可以通過修改視圖的定義即可,而不用修改應用程序,對訪問者是不會造成影響的,一般來說,這樣代價會更小。

 
2、缺點:

(1)實際數據表的表結構修改了,則必須手動修改相關視圖。

(2)應對大數據時,可能會降低性能。

注:如果使用的數據庫類型是Mysql,因爲 Mysql 目前並不支持物化視圖,所以針對分佈式、大數據的程序,都不建議使用視圖。

 

原文鏈接:https://www.haveyb.com/article/59

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章