久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql視圖指的是什么

共計(jì) 1958 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。

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

mysql 視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義;視圖包含系列帶有名稱的列和行數(shù)據(jù),而行和列數(shù)據(jù)來自定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成,簡(jiǎn)單的來說視圖是由 select 結(jié)果組成的表。

什么是視圖

視圖是一個(gè)虛擬表,其內(nèi)容由查詢定義。

同真實(shí)的表一樣,視圖包含系列帶有名稱的列和行數(shù)據(jù)。

行和列數(shù)據(jù)來自定義視圖的查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。

簡(jiǎn)單的來說視圖是由 select 結(jié)果組成的表。

舉個(gè)栗子
使用查詢表命令

SELECT * FROM 表名 ;

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

視圖的特性

視圖是對(duì)若干張基本表的引用,是一張?zhí)摫恚遣樵冋Z句執(zhí)行的結(jié)果。

它不存儲(chǔ)具體的數(shù)據(jù) (基本表數(shù)據(jù)發(fā)生了改變,視圖也會(huì)跟著改變)。

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

視圖的作用

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

查詢性能提高。

提高了數(shù)據(jù)的獨(dú)立性。

創(chuàng)建視圖

假設(shè)我們有一張學(xué)生表如下
mysql 視圖指的是什么

需求:創(chuàng)建視圖并查詢年齡大于 20 的學(xué)生

CREATE VIEW stu_age_view 
AS(SELECT * FROM stu WHERE age

點(diǎn)擊視圖打開可以看到剛剛創(chuàng)建的表

mysql 視圖指的是什么
表里內(nèi)容為需求內(nèi)容

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

修改視圖

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

舉個(gè)栗子:上面創(chuàng)建的視圖“stu_age_view”為年齡 20 以上的學(xué)生,現(xiàn)在修改為全部學(xué)生。

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

刪除視圖

DROP VIEW 視圖名稱;

視圖機(jī)制替換式

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

具化式

mysq| 先得到了視圖執(zhí)行的結(jié)果,該結(jié)果形成一個(gè)中間結(jié)果暫時(shí)存在內(nèi)存中。
外面的 select 語句就調(diào)用了這些中間結(jié)果 (臨時(shí)表)

替換式與具化式區(qū)別

替換式: 替換方式,將視圖公式替換后,當(dāng)成一個(gè)整體 sq| 進(jìn)行處理了。

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

下面舉個(gè)栗子來加深理解
在上面創(chuàng)建視圖時(shí)我們已經(jīng)創(chuàng)建了一個(gè)需求為年齡大于 20 的學(xué)生的視圖
mysql 視圖指的是什么
那么接下來我們查看這個(gè)視圖

SELECT * FROM stu_age_view ;

如果是替換式,那么它的內(nèi)部運(yùn)行邏輯就為

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

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

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

上面這兩條語句無法運(yùn)行,只是為了方便舉例提出。

那么我們?cè)僬f回創(chuàng)建視圖

ALGORITHM 參數(shù)(三個(gè))

mergeTEMPTABLEUNDEFINED 處理方式替換式,可以進(jìn)行更新真實(shí)表中的數(shù)據(jù)具化式,由于數(shù)據(jù)存儲(chǔ)在臨時(shí)表中,所以不可以進(jìn)行更新操作沒有定義 ALGORITHM 參數(shù),mysq 更傾向于選擇替換方式,因?yàn)樗佑行А?/p>

用參數(shù)創(chuàng)建視圖

CREATE ALGORITHM = MERGE VIEW stu_age_viewAS(SELECT * FROM stu WHERE age

還有兩個(gè)需要注意的東西是

WITH CHECK OPTION

更新數(shù)據(jù)時(shí)不能插入或更新不符合視圖限制條件的記錄。
比如上面我們查詢了一張年齡大于 20 的視圖,那么在這張視圖里面更新數(shù)據(jù)時(shí)如果年齡小于 20 則會(huì)報(bào)錯(cuò)。

LOCAL 和 CASCADED

為可選參數(shù),決定了檢查測(cè)試的范圍,默認(rèn)值為 CASCADED

視圖不可更新部分

聚合函數(shù)

DISTINCT 關(guān)鍵字

GROUP BY 子句

HAVING 子句

UNION 運(yùn)算符

FROM 子句中包含多個(gè)表

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

只要視圖當(dāng)中的數(shù)據(jù)不是來自于基表,就不能夠直接修改

關(guān)于“mysql 視圖指的是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“mysql 視圖指的是什么”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。

向 AI 問一下細(xì)節(jié)

丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2024-02-03發(fā)表,共計(jì)1958字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 景德镇市| 莎车县| 台南市| 江安县| 山阴县| 邢台县| 车致| 澄迈县| 林芝县| 定远县| 子洲县| 全南县| 葫芦岛市| 游戏| 壤塘县| 鹤庆县| 乌拉特前旗| 文成县| 深圳市| 读书| 青河县| 桦南县| 德安县| 安化县| 屯昌县| 明溪县| 石狮市| 金溪县| 静海县| 满洲里市| 津南区| 墨竹工卡县| 扶沟县| 樟树市| 西城区| 福泉市| 滨州市| 曲麻莱县| 师宗县| 西林县| 怀安县|