<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    朋的博客

    MySQL資料,Java技術(shù),管理思想,博弈論,Ajax,XP極限編程,H.264,HEVC,HDR
    隨筆 - 86, 文章 - 59, 評(píng)論 - 1069, 引用 - 0
    數(shù)據(jù)加載中……

    MySQL 5.0新特性之視圖(中文教程,原創(chuàng))

             花了國(guó)慶的部分時(shí)間,終于完成了這個(gè)教程的翻譯了,現(xiàn)在可以想象當(dāng)年候捷先生翻譯Think in Java是多么困難的了,唉,累啊,好久沒(méi)運(yùn)動(dòng)過(guò)了,快找個(gè)機(jī)會(huì)去玩玩。可惜深圳沒(méi)什么地方可以運(yùn)動(dòng)的,訂運(yùn)動(dòng)場(chǎng)稍微慢一點(diǎn)就沒(méi)了……政府問(wèn)題,不去討論。

             回到正題,關(guān)于這個(gè)翻譯我十分推薦大家看看,因?yàn)閷?duì)MySQL來(lái)說(shuō),實(shí)現(xiàn)了視圖確實(shí)是一個(gè)很大的進(jìn)步,而且能給MySQL開(kāi)發(fā)者帶來(lái)的好處不僅僅是速度上的,更多是開(kāi)發(fā)和維護(hù)效率上的改進(jìn)。


            這里舉一個(gè)書(shū)中的例子吧:


    Example: Constraint checks 示例:約束條件檢查

    MySQL支持NOT NULL的列約束,如:
     
    CREATE TABLE t ( 

      column1 INT NOT NULL,  

      column2 INT NOT NULL); 
     


    這并非MySQL約束的全部功能,但是還是不能做到只允許兩列中其中一列可以為空或者讓列1數(shù)值在1到5之間,又或者使列1在某些特殊情況下可以為空。不過(guò),我們可以使用視圖的定義通過(guò)下面的方法實(shí)現(xiàn):

    CREATE TABLE t (column1 INT, column2 INT);
     
    CREATE VIEW v AS

    SELECT column1, column2 FROM t

    WHERE (column1 is NOT NULL OR column2 IS NOT NULL) 

      AND column1 BETWEEN 1 AND 5

    WITH CHECK OPTION; 

     
    之后就可以通過(guò)對(duì)視圖v進(jìn)行插入或更新,達(dá)到我前面所需要的效果,在特殊情況下允許為空。


     是不是比較有用呢?前面我寫(xiě)了篇關(guān)于MySQL子查詢的文章,但有了視圖其實(shí)可以免去部分使用子查詢的情況,大家看看下面這個(gè)例子吧:



    示例:子查詢的替代
     
    在MySQL 4.1版本以后就開(kāi)始支持FROM語(yǔ)句中的子查詢了,例如:

     
    SELECT *

    FROM (SELECT * FROM t2 UNION SELECT * FROM t3) AS t2_t3; 

     
    但是下面這樣做會(huì)更好:
     

    CREATE VIEW t2_t3 AS

    SELECT * FROM t2 UNION SELECT * FROM t3;
     
    SELECT * FROM t2_t3;



    把這個(gè)轉(zhuǎn)化為對(duì)視圖的查詢會(huì)更好更方便,因?yàn)槟憧赡軙?huì)使用復(fù)雜的對(duì)大數(shù)字的查詢語(yǔ)句(比方說(shuō)55個(gè)字),語(yǔ)句中包括對(duì)系統(tǒng)變量的一些定義,那如果有人改變了表t2,你可能要改這個(gè)55字的SELECT語(yǔ)句,然而使用視圖,一切都沒(méi)變,你需要改的只是視圖定義中的表名。 


     
    另一個(gè)子查詢的例子:在MySQL 5.0.3中不允許使用AVG(DISTINCT ...),因?yàn)橄旅孢@個(gè)語(yǔ)句是非法語(yǔ)句: 

     
    SELECT AVG(DISTINCT column1) FROM t;
     
    但采用下面方法能實(shí)現(xiàn)一樣的效果,而且是合法的:
     
    CREATE VIEW v AS SELECT DISTINCT column1 FROM t;
     
    SELECT AVG(column1) FROM v;


    下面是中文版的下載地址:

    http://www.tkk7.com/Files/chenpengyi/MySQL-Views-Translation-CN.rar
    轉(zhuǎn)載時(shí)保留個(gè)人及出處信息,否則可能被視為侵權(quán),呵呵。

    如果需要英文原版,可以到下面地址下載:
    http://dev.mysql.com/tech-resources/articles/mysql-views.pdf


    posted on 2005-10-05 11:39 benchensz 閱讀(6977) 評(píng)論(5)  編輯  收藏 所屬分類: 隨便寫(xiě)寫(xiě)(比較有用,值得看看)

    評(píng)論

    # re: MySQL 5.0新特性之視圖(中文教程,原創(chuàng))  回復(fù)  更多評(píng)論   

    還有幾本書(shū)有中文翻譯沒(méi)有?
    我只看到過(guò)
    主題 MySQL 5.x 相關(guān)資料 (全中文) zz « 上一主題 | 下一主題 »

    sensebb_1 發(fā)表于:2005-10-14 17:57

    發(fā)帖: 862
    積分: 0
    注冊(cè): 2003-04-14
    MySQL 5.0
    的正式版相信不久就出來(lái)了 (現(xiàn)在是 5.0.13 rc1),
    快快了解一下它吧!


    * MySQL 5.0 新特性教程 (系列)

    - 第一部分: 存儲(chǔ)過(guò)程 (Store Procedure)
    第一講: http://www.phpv.net/article.php/1460
    第二講: http://www.phpv.net/article.php/1461
    第三講: http://www.phpv.net/article.php/1462
    第四講: http://www.phpv.net/article.php/1463

    * MySQL 5.0 中的觸發(fā)器 (trigger)

    http://www.phpv.net/article.php/1473

    * 看不懂 MySQL 出錯(cuò)時(shí)的代碼? 這里有詳細(xì)的錯(cuò)誤碼
    (Error Number) 對(duì)應(yīng)表:

    http://www.phpv.net/article.php/1477

    還缺:
    MySQL 5.0 Data Dictionary
    The MySQL 5.0 Archive Storage Engine
    MySQL 5.0's Pluggable Storage Engine Architecture, Part 1: An Overview
    2005-10-31 13:44 | l1t

    # re: MySQL 5.0新特性之視圖(中文教程,原創(chuàng))  回復(fù)  更多評(píng)論   

    那怎樣修改視圖呢?
    比如說(shuō)我寫(xiě)一個(gè)視圖為
    create view test as select * from table1;
    當(dāng)我想改成 select name from table1;
    的時(shí)候我怎么改啊?
    2005-11-25 16:25 | gqin

    # re: MySQL 5.0新特性之視圖(中文教程,原創(chuàng))  回復(fù)  更多評(píng)論   

    Good place, but need more!
    2006-02-10 17:48 | timmy

    # re:那怎樣修改視圖呢?  回復(fù)  更多評(píng)論   

    @gqin
    mysql5手冊(cè)里有
    create or replace view test as select name from table1;

    alter view test as select name from table1;
    2006-02-28 16:17 | guest

    # re: MySQL 5.0新特性之視圖(中文教程,原創(chuàng))  回復(fù)  更多評(píng)論   

    alter view test as select name from table1
    2006-04-05 20:59 | 陳朋奕
    主站蜘蛛池模板: 青青草国产免费久久久91 | 在线免费视频一区二区| 色偷偷亚洲第一综合网| 在线观看国产区亚洲一区成人| 午夜老司机永久免费看片| 亚洲色成人网站WWW永久四虎| 亚洲人成网站色在线入口| 国产激情免费视频在线观看| 国产精品亚洲四区在线观看| 亚洲精品99久久久久中文字幕| 91在线老王精品免费播放| 国产成人高清亚洲一区久久| 亚洲人成在线电影| 国产精品无码一区二区三区免费| 日本一区午夜艳熟免费| 亚洲精品无码久久久久YW| 亚洲成a人片在线观看无码专区| 免费看香港一级毛片| 黄网站色视频免费在线观看的a站最新| 久久久久精品国产亚洲AV无码| 久久久久国产成人精品亚洲午夜| 免费国产作爱视频网站| 久久av免费天堂小草播放| 亚洲色大18成人网站WWW在线播放| 亚洲AV无码久久精品成人| 波多野结衣视频在线免费观看| 国产a视频精品免费观看| 美女网站在线观看视频免费的| 亚洲色大成网站www久久九| 亚洲视频手机在线| 亚洲精品国偷自产在线| 免费一区二区视频| 好爽…又高潮了免费毛片| 日韩内射激情视频在线播放免费| 成人a毛片视频免费看| 亚洲欧洲无码一区二区三区| 亚洲自偷自偷精品| 国产亚洲精AA在线观看SEE| 亚洲 综合 国产 欧洲 丝袜| 性感美女视频免费网站午夜| 无码国产精品一区二区免费式影视 |