亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

6 MySQL視圖

系統(tǒng) 2690 0

目錄:

  1. 視圖概述

    1.1 為什么引入視圖

    1.2 什么是視圖

    1.3 視圖的好處

    1.4 視圖的分類(lèi)

  2. 視圖的建立和刪除

  3. 實(shí)驗(yàn)

?

?

1.? 視圖概述

1.1? 為什么引入視圖 [1]

問(wèn)題:假如因?yàn)槟撤N需要, a 表與 b 表需要進(jìn)行合并起來(lái)組成一個(gè)新的表 c 。最后 a 表與 b 表都不會(huì)存在了。而由于原來(lái)程序中編寫(xiě) sql 分別是基于 a 表與 b 表查詢(xún)的,這就意味著需要重新編寫(xiě)大量的 sql( 改成向 c 表去操作數(shù)據(jù) ) 。

解決方案:定義兩個(gè)視圖名字還是原來(lái)的表名 a b 。 a b 視圖完成從 c 表中取出內(nèi)容。通過(guò)視圖就可以做到不修改。

1.2? 什么是視圖 [2]

視圖是從一個(gè)或多個(gè)表中導(dǎo)出來(lái)的表,是一種虛擬存在的表。視圖就像一個(gè)窗口,通過(guò)這個(gè)窗口可以看到系統(tǒng)專(zhuān)門(mén)提供的數(shù)據(jù)。這樣,用戶(hù)可以不用看到整個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù),而之關(guān)心對(duì)自己有用的數(shù)據(jù)。數(shù)據(jù)庫(kù)中只存放了視圖的定義,而沒(méi)有存放視圖中的數(shù)據(jù),這些數(shù)據(jù)存放在原來(lái)的表中。使用視圖查詢(xún)數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)系統(tǒng)會(huì)從原來(lái)的表中取出對(duì)應(yīng)的數(shù)據(jù)。視圖中的數(shù)據(jù)依賴(lài)于原來(lái)表中的數(shù)據(jù),一旦表中數(shù)據(jù)發(fā)生改變,顯示在視圖中的數(shù)據(jù)也會(huì)發(fā)生改變。

1.3? 視圖的好處 [3]

(1)? 安全性。

  一般是這樣做的 : 創(chuàng)建一個(gè)視圖,定義好該視圖所操作的數(shù)據(jù)。之后將用戶(hù)權(quán)限與視圖綁定。這樣的方式是使用到了一個(gè)特性: grant 語(yǔ)句可以針對(duì)視圖進(jìn)行授予權(quán)限。
(2)? 查詢(xún)性能提高。
(3)? 應(yīng)對(duì)復(fù)雜的查詢(xún)需求。

  可以進(jìn)行問(wèn)題分解,然后將創(chuàng)建多個(gè)視圖獲取數(shù)據(jù)。將視圖聯(lián)合起來(lái)就能得到需要的結(jié)果了。

(4)? 靈活應(yīng)對(duì)需求變更。
  有靈活性的功能需求后,需要改動(dòng)表的結(jié)構(gòu)而導(dǎo)致工作量比較大。那么可以使用虛擬表的形式達(dá)到少修改的效果。這是在實(shí)際開(kāi)發(fā)中比較有用的。比如下文的問(wèn)題案例。

?

1.4? 視圖的分類(lèi) [4]

mysql 的視圖有三種類(lèi)型: MERGE 、 TEMPTABLE UNDEFINED 。如果沒(méi)有 ALGORITHM 子句,默認(rèn)算法是 UNDEFINED (未定義的)。算法會(huì)影響 MySQL 處理視圖的方式。

(1)?MERGE ,會(huì)將引用視圖的語(yǔ)句的文本與視圖定義合并起來(lái),使得視圖定義的某一部分取代語(yǔ)句的對(duì)應(yīng)部分。

(2)?TEMPTABLE ,視圖的結(jié)果將被置于臨時(shí)表中,然后使用它執(zhí)行語(yǔ)句。

(3)?UNDEFINED , MySQL 將選擇所要使用的算法。如果可能,它傾向于 MERGE 而不是 TEMPTABLE ,這是因?yàn)? MERGE 通常更有效,而且如果使用了臨時(shí)表,視圖是不可更新的。

?

2.? 視圖的建立和刪除 [5]

mysql 通過(guò) create?view 實(shí)現(xiàn)創(chuàng)建視圖,語(yǔ)法:

create?[algorithm={undifined|merge|temptable}]?view?view_name?[(properties)]?as?select?*?[with?[CASCADED|LOCAL]?check?option];

?

解析:

algorithm 是可選參數(shù),表示視圖選擇的算法, undefined 表示 mysql 自動(dòng)選擇算法, merge 表示將使用視圖的語(yǔ)句與視圖定義合并,使視圖的定義部分取代語(yǔ)句的對(duì)應(yīng)部分, temptable 表示視圖的結(jié)構(gòu)保存到臨時(shí)表,然后使用臨時(shí)表執(zhí)行語(yǔ)句。

view_name 表示要?jiǎng)?chuàng)建的視圖的名字。

properties 是可選參數(shù),指定視圖中各屬性的名詞,默認(rèn)與 select 中查詢(xún)的相同。

select 是一個(gè)完整的查詢(xún)語(yǔ)句從某個(gè)表中查詢(xún)某些滿(mǎn)足條件的記錄并導(dǎo)入視圖中。

with?check?option 是可選參數(shù),表示更新視圖是要保證在視圖的權(quán)限范圍之內(nèi)。

?

視圖的更改刪除請(qǐng)參看實(shí)驗(yàn)部分。

?

3.? 實(shí)驗(yàn)

(1)? 創(chuàng)建表、插入數(shù)據(jù)

?

          
            create
          
          
            table
          
          
             book(

id 
          
          
            int
          
          (
          
            10
          
          ) 
          
            not
          
          
            null
          
          
             auto_increment,

name 
          
          
            varchar
          
          (
          
            40
          
          ) 
          
            not
          
          
            null
          
          
            ,

author 
          
          
            varchar
          
          (
          
            40
          
          ) 
          
            not
          
          
            null
          
          
            ,

press 
          
          
            varchar
          
          (
          
            40
          
          ) 
          
            not
          
          
            null
          
          
            ,

price 
          
          
            int
          
          (
          
            4
          
          
            ),


          
          
            primary
          
          
            key
          
          
             (id)

);




          
          
            insert
          
          
            into
          
           book(name,author,press,price) 
          
            values
          
           ("mysql_guider","xiao ming", "whu
          
            -
          
          press", "
          
            99
          
          
            ");


          
          
            insert
          
          
            into
          
           book(name,author,press,price) 
          
            values
          
           ("python_guider","xiao ming", "whu
          
            -
          
          press", "
          
            100
          
          
            ");


          
          
            insert
          
          
            into
          
           book(name,author,press,price) 
          
            values
          
           ("ws_guider","xiao ming", "whu
          
            -
          
          press", "
          
            101
          
          ");
        
View Code

?

(2)? 創(chuàng)建視圖

create?view?book_view?as?select?name,?author?from?book;

?創(chuàng)建成功!

(3)? 查看視圖

desc?book_view;

?

?

(4)? 使用視圖進(jìn)行查詢(xún)

select?*?from?book_view;

?

?

(5)? 使用視圖進(jìn)行插入數(shù)據(jù)

insert?into?book_view?values?("lol_guider","xiao?yang");

插入成功!

?

select?*?from?book_view;

? 6 MySQL視圖

select?*?from?book;

? 6 MySQL視圖

(6)? 使用視圖進(jìn)行更改數(shù)據(jù)

update?book_view?set?author="xiao?ma"?where?name="ws_guider";

更改成功!

select?*?from?book;

? 6 MySQL視圖

(7)? 更改視圖

alter?view?book_view?as?select?name,?author,?price?from?book?with?cascaded?check?option;

更改成功!

desc?book_view;

?

(8)? 刪除視圖

drop?view?if?exists?book_view;

?

運(yùn)行成功!

??

參考:

[1]? http://www.cnblogs.com/wangtao_20/archive/2011/02/24/1964276.html

[2]? http://www.jb51.net/article/36363.htm

[3]? http://www.cnblogs.com/lyhabc/p/3801527.html

[4]? http://blog.51yip.com/mysql/1062.html

[5]? http://www.cnblogs.com/kiwi/archive/2012/11/17/2775228.html

?

?

?

6 MySQL視圖


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 在线视频一区二区三区 | 91色蝌蚪| 久久亚洲人成国产精品 | 青青青青久久精品国产h | 伊人精品成人久久综合欧美 | 国内久久精品视频 | 高清视频 一区二区三区四区 | 久久免费99精品久久久久久 | 亚洲国产一区二区三区最新 | 亚洲婷婷在线 | 离线枕边人在线观看 | 亚洲精品综合一二三区在线 | 国产毛片久久久久久国产毛片 | 成人影院vs一区二区 | 国产aav| 欧美精品在欧美一区二区 | 欧美在线色 | 国产天天在线 | 欧美午夜在线观看 | 亚洲视频在线一区二区 | 思思久热re6这里有精品 | 四虎影院www| 国产精品视频色拍拍 | 国产精品爱久久久久久久小 | 日本h片a毛片在线播放 | 九九影片重口味 | 久久精品国产在爱久久 | 天堂毛片 | 亚洲精品久久国产小说 | 亚洲九九九 | 国产一级淫片a免费播放口欧美 | 99热这里都是国产精品 | 国产精品亚洲高清一区二区 | 91中文字幕在线播放 | 日韩欧美一区二区三区 | 日日摸夜夜添夜夜添影院视频 | 亚洲国产精品一区二区九九 | 视频国产在线 | 爆操极品美女 | 亚洲国产天堂在线网址 | 性做久久久久久久 |