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

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

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

    朋的博客

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

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

             花了國慶的部分時間,終于完成了這個教程的翻譯了,現在可以想象當年候捷先生翻譯Think in Java是多么困難的了,唉,累啊,好久沒運動過了,快找個機會去玩玩。可惜深圳沒什么地方可以運動的,訂運動場稍微慢一點就沒了……政府問題,不去討論。

             回到正題,關于這個翻譯我十分推薦大家看看,因為對MySQL來說,實現了視圖確實是一個很大的進步,而且能給MySQL開發者帶來的好處不僅僅是速度上的,更多是開發和維護效率上的改進。


            這里舉一個書中的例子吧:


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

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

      column1 INT NOT NULL,  

      column2 INT NOT NULL); 
     


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

    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; 

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


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



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

     
    SELECT *

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

     
    但是下面這樣做會更好:
     

    CREATE VIEW t2_t3 AS

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



    把這個轉化為對視圖的查詢會更好更方便,因為你可能會使用復雜的對大數字的查詢語句(比方說55個字),語句中包括對系統變量的一些定義,那如果有人改變了表t2,你可能要改這個55字的SELECT語句,然而使用視圖,一切都沒變,你需要改的只是視圖定義中的表名。 


     
    另一個子查詢的例子:在MySQL 5.0.3中不允許使用AVG(DISTINCT ...),因為下面這個語句是非法語句: 

     
    SELECT AVG(DISTINCT column1) FROM t;
     
    但采用下面方法能實現一樣的效果,而且是合法的:
     
    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
    轉載時保留個人及出處信息,否則可能被視為侵權,呵呵。

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


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

    評論

    # re: MySQL 5.0新特性之視圖(中文教程,原創)  回復  更多評論   

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

    sensebb_1 發表于:2005-10-14 17:57

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


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

    - 第一部分: 存儲過程 (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 中的觸發器 (trigger)

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

    * 看不懂 MySQL 出錯時的代碼? 這里有詳細的錯誤碼
    (Error Number) 對應表:

    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新特性之視圖(中文教程,原創)  回復  更多評論   

    那怎樣修改視圖呢?
    比如說我寫一個視圖為
    create view test as select * from table1;
    當我想改成 select name from table1;
    的時候我怎么改啊?
    2005-11-25 16:25 | gqin

    # re: MySQL 5.0新特性之視圖(中文教程,原創)  回復  更多評論   

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

    # re:那怎樣修改視圖呢?  回復  更多評論   

    @gqin
    mysql5手冊里有
    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新特性之視圖(中文教程,原創)  回復  更多評論   

    alter view test as select name from table1
    2006-04-05 20:59 | 陳朋奕
    主站蜘蛛池模板: 日韩免费无码视频一区二区三区| 18禁超污无遮挡无码免费网站 | 日本高清免费网站| 亚洲国产成人久久综合碰| 亚洲人成小说网站色| 日本阿v免费费视频完整版| 久久亚洲国产精品成人AV秋霞 | 亚洲一区二区三区91| 无码中文在线二区免费| 亚洲w码欧洲s码免费| 成人免费视频一区二区三区| 亚洲码和欧洲码一码二码三码| 四色在线精品免费观看| 精品国产亚洲一区二区在线观看| 亚洲成_人网站图片| 日本不卡高清中文字幕免费| 另类小说亚洲色图| 亚洲日韩精品一区二区三区| 18禁在线无遮挡免费观看网站| 久久久国产精品亚洲一区| 成人网站免费观看| 特级毛片全部免费播放a一级| 国产成人综合亚洲AV第一页| 亚洲A∨精品一区二区三区下载| 国产福利免费在线观看| 亚洲性线免费观看视频成熟| 91九色视频无限观看免费| 最新国产精品亚洲| 亚洲精品人成无码中文毛片| 野花香高清在线观看视频播放免费 | 亚洲情综合五月天| 午夜国产精品免费观看| 最新亚洲人成无码网站| 亚洲国产精品高清久久久| 99久久国产热无码精品免费| 国产精品亚洲а∨天堂2021| 亚洲av福利无码无一区二区| 国产精品免费看久久久| 亚洲AV无码国产精品色午友在线| 亚洲第一成年免费网站| 产传媒61国产免费|