柚子快報激活碼778899分享:數(shù)據(jù)庫 【MySQL】視圖
柚子快報激活碼778899分享:數(shù)據(jù)庫 【MySQL】視圖
視圖
1.視圖2.基本使用3.視圖規(guī)則和限制
點贊??收藏??關(guān)注?? 你的支持是對我最大的鼓勵,我們一起努力吧!??
首先說一下這個視圖和前面的事務(wù)中的Read View沒有任何關(guān)系!就如老婆和老婆餅一樣。
1.視圖
視圖是一個虛擬表,它可以把查詢出來的結(jié)果暫時以表結(jié)構(gòu)的方式保存起來,其內(nèi)容由查詢定義。視圖同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。視圖的數(shù)據(jù)變化會影響到基表,基表的數(shù)據(jù)變化也會影響到視圖。
基表就是你要查詢的表,然后可以把據(jù)查詢的結(jié)果以表的結(jié)構(gòu)保存起來這就是視圖。
2.基本使用
創(chuàng)建視圖
create view 視圖名 as select語句;
做個案例,我想知道每一個員工和它對應(yīng)的名字是多少。 其實這就是多表查詢。我們前面學(xué)過了。 我們可以弄一個內(nèi)連接。
如果我以后非常高頻想根據(jù)一個人的名字拿到他所在的部門,我們可以對表做內(nèi)連接然后篩選一下。這沒問題,但是每次都要對這樣做然后太麻煩了,因此我們可以使用位圖!
注意當(dāng)前右邊現(xiàn)在的表結(jié)構(gòu)。
現(xiàn)在我們可以把select查詢到的結(jié)果,當(dāng)做一張視圖。
創(chuàng)建視圖
create view myview as select ename,dname from emp inner join dept on emp.deptno=dept.deptno;
注意細(xì)節(jié),我們又一次執(zhí)行相同的sql語句時,報錯了說表myview已經(jīng)存在了。然后我們查表的時候發(fā)現(xiàn)確實就是多了一個myview表結(jié)構(gòu)。它其實就是表??梢哉J(rèn)為就是在內(nèi)存中創(chuàng)建好這張表結(jié)構(gòu)就是按照對應(yīng)篩選好的數(shù)據(jù)創(chuàng)建的然后篩選的數(shù)據(jù)放在里面。
當(dāng)查的時候可以seledct直接查。
這樣做的好處就是,如果將來高頻想獲得一個員工和它對應(yīng)的部門名,那就不用在那么麻煩多表查詢?nèi)缓笤俸Y選了,可以把結(jié)果查出來以視圖的方式放在這,在查的時候我們只用查視圖就好了。
因為視圖的數(shù)據(jù)來源都是從基表來的,那把視圖里的數(shù)據(jù)修改會不會影響基表數(shù)據(jù)呢?把基表里的數(shù)據(jù)修改會不會影響視圖里的數(shù)據(jù)呢?
可以看到,修改了視圖,是會對基表數(shù)據(jù)有影響,說明視圖和基表是打通的。真的是這樣嗎,我們在對基表修改一下看看。
我們這個視圖可不是從一張表來的,我們也可以對dept表中數(shù)據(jù)修改一下看看。發(fā)現(xiàn)對基表中數(shù)據(jù)修改,視圖中的數(shù)據(jù)也變。這說明視圖和基表確實是打通的。
刪除視圖
drop view 視圖名;
3.視圖規(guī)則和限制
與表一樣,必須唯一命名(不能出現(xiàn)同名視圖或表名)創(chuàng)建視圖數(shù)目無限制,但要考慮復(fù)雜查詢創(chuàng)建為視圖之后的性能影響視圖不能添加索引,也不能有關(guān)聯(lián)的觸發(fā)器或者默認(rèn)值視圖可以提高安全性,必須具有足夠的訪問權(quán)限order by 可以用在視圖中,但是如果從該視圖檢索數(shù)據(jù) select 中也含有 order by ,那么該視圖中的 order by 將被覆蓋視圖可以和表一起使用(內(nèi)聯(lián),左外連接,右外連接)
柚子快報激活碼778899分享:數(shù)據(jù)庫 【MySQL】視圖
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。