中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql視圖指的是什么

發布時間:2023-05-10 09:59:07 來源:億速云 閱讀:128 作者:iii 欄目:MySQL數據庫

這篇文章主要介紹了mysql視圖指的是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇mysql視圖指的是什么文章都會有所收獲,下面我們一起來看看吧。

mysql視圖是一個虛擬表,其內容由查詢定義;視圖包含系列帶有名稱的列和行數據,而行和列數據來自定義視圖的查詢所引用的表,并且在引用視圖時動態生成,簡單的來說視圖是由select結果組成的表。

什么是視圖

  • 視圖是一個虛擬表,其內容由查詢定義。

  • 同真實的表一樣,視圖包含系列帶有名稱的列和行數據。

  • 行和列數據來自定義視圖的查詢所引用的表,并且在引用視圖時動態生成。

  • 簡單的來說視圖是由select結果組成的表。

舉個栗子
使用查詢表命令

SELECT * FROM 表名 ;

查出來可以看到一張表,你看到的內容就叫視圖。

視圖的特性

  • 視圖是對若干張基本表的引用,是一張虛表,是查詢語句執行的結果。

  • 它不存儲具體的數據(基本表數據發生了改變,視圖也會跟著改變) 。

  • 它可以跟基本表一樣,進行增刪改查操作(增刪改操作有條件限制)。

視圖的作用

  • 提高安全性:創建一個視圖,定義好該視圖所操作的數據。之后將用戶權限與視圖綁定。這樣的方式是使用到了一個特性: grant語句可以針對視圖進行授予權限。
    舉個栗子:管理員查詢到的數據中包含各個用戶的密碼,而管理員不想讓用戶看到密碼,則可以用創建視圖的方式只讓用戶看到管理員想讓他看到的數據

  • 查詢性能提高。

  • 提高了數據的獨立性。

創建視圖

假設我們有一張學生表如下
mysql視圖指的是什么

需求:創建視圖并查詢年齡大于20的學生

CREATE VIEW stu_age_view 
AS(SELECT * FROM stu WHERE age>20);

點擊視圖打開可以看到剛剛創建的表

mysql視圖指的是什么
表里內容為需求內容

mysql視圖指的是什么
基于視圖,我們就可以繼續查詢想要的內容,比如查詢年齡再21歲以上名字叫ls的人,基于視圖查可以提升效率,減少運行成本。

修改視圖

CREATE OR REPLACE VIEW 視圖名  AS(SELECT  [...]  FROM [...] );

舉個栗子:上面創建的視圖“stu_age_view”為年齡20以上的學生,現在修改為全部學生。

CREATE OR REPLACE VIEW stu_age_view 
AS(SELECT * FROM stu );

刪除視圖

DROP VIEW 視圖名稱;

視圖機制

替換式

操作視圖時, 視圖名直接被視圖定義給替換掉

具化式

mysq|先得到了視圖執行的結果,該結果形成一個中間結果暫時存在內存中。
外面的select語句就調用了這些中間結果(臨時表)

替換式與具化式區別

  • 替換式:替換方式,將視圖公式替換后,當成一個整體sq|進行處理了。

  • 具化式:具體化方式,先處理視圖結果,后處理外面的查詢需求。

下面舉個栗子來加深理解
在上面創建視圖時我們已經創建了一個需求為年齡大于20的學生的視圖
mysql視圖指的是什么
那么接下來我們查看這個視圖

SELECT * FROM stu_age_view ;

如果是替換式,那么它的內部運行邏輯就為

SELECT * FROM (SELECT *FROM stu WHERE age >20) tihuan;

直接將stu_age_view的代碼替換出來;
如果是具化式,那么它就是先把符合條件的查詢出來放在一張表(內存)里,然后直接查詢這張表。

(SELECT * FROM stu WHERE age >20) AS TEMPTABLE;SELECT * FROM TEMPTABLE;

上面這兩條語句無法運行,只是為了方便舉例提出

那么我們再說回創建視圖

ALGORITHM參數(三個)

mergeTEMPTABLEUNDEFINED
處理方式替換式,可以進行更新真實表中的數據具化式,由于數據存儲在臨時表中,所以不可以進行更新操作沒有定義ALGORITHM參數,mysq更傾向于選擇替換方式,因為它更加有效。

用參數創建視圖

CREATE ALGORITHM = MERGE VIEW stu_age_viewAS(SELECT * FROM stu WHERE age >20);

還有兩個需要注意的東西是

  • WITH CHECK OPTION

更新數據時不能插入或更新不符合視圖限制條件的記錄。
比如上面我們查詢了一張年齡大于20的視圖,那么在這張視圖里面更新數據時如果年齡小于20則會報錯。

  • LOCAL和CASCADED

為可選參數,決定了檢查測試的范圍,默認值為CASCADED

視圖不可更新部分

  • 聚合函數

  • DISTINCT關鍵字

  • GROUP BY子句

  • HAVING子句

  • UNION運算符

  • FROM子句中包含多個表

  • SELECT語句中引用了不可更新視圖

  • 只要視圖當中的數據不是來自于基表,就不能夠直接修改

關于“mysql視圖指的是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“mysql視圖指的是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嵊泗县| 兰州市| 仙游县| 洛扎县| 聂荣县| 石阡县| 江门市| 浦城县| 黄浦区| 潞西市| 舒城县| 略阳县| 三门县| 越西县| 呼图壁县| 南澳县| 皮山县| 贵溪市| 高要市| 麦盖提县| 铁力市| 南澳县| 灵川县| 富顺县| 黔西县| 简阳市| 永靖县| 新晃| 高尔夫| 讷河市| 苏尼特左旗| 旌德县| 东阳市| 满城县| 武定县| 仲巴县| 修武县| 阿拉善盟| 乌拉特后旗| 乐东| 万州区|