手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Mysql>列表

如何创建MySQL5的视图

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
clause is present in the CREATE VIEW statement.

  • The CREATE VIEW statement has an explicit ALGORITHM = UNDEFINED clause.

  • ALGORITHM = MERGE is specified for a view that can be processed only with a temporary table. In this case, MySQL generates a warning and sets the algorithm to UNDEFINED.

  • As mentioned earlier, MERGE is handled by merging corresponding parts of a view definition into the statement that refers to the view. The following examples briefly illustrate how the MERGE algorithm works. The examples assume that there is a view v_merge that has this definition:

    CREATE ALGORITHM = MERGE VIEW v_merge (vc1, vc2) AS
    
    SELECT c1, c2 FROM t WHERE c3 > 100;
    
    

    Example 1: Suppose that we issue this statement:

    SELECT * FROM v_merge;
    
    

    MySQL handles the statement as follows:

    • v_merge becomes t

    • * becomes vc1, vc2, which corresponds to c1, c2

    • The view WHERE clause is added

    The resulting statement to be executed becomes:

    SELECT c1, c2 FROM t WHERE c3 > 100;
    
    

    Example 2: Suppose that we issue this statement:

    SELECT * FROM v_merge WHERE vc1 < 100;
    
    

    This statement is handled similarly to the previous one, except that vc1 < 100 becomes c1 < 100 and the view WHERE clause is added to the statement WHERE clause using an AND connective (and parentheses are added to make sure the parts of the clause are executed with correct precedence). The resulting statement to be executed becomes:

    SELECT c1, c2 FROM t WHERE (c3 > 100) AND (c1 < 100);
    
    

    Effectively, the statement to be executed has a WHERE clause of this form:

    WHERE (select WHERE) AND (view WHERE)
    
    

    The MERGE algorithm requires a one-to relationship between the rows in the view and the rows in the underlying table. If this relationship does not hold, a temporary table must be used instead. Lack of a one-to-one relationship occurs if the view contains any of a number of constructs:

    • Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth)

    • DISTINCT

    • GROUP BY

    • HAVING

    • UNION or UNION ALL

    • Refers only to literal values (in this case, there is no underlying table)

    Some views are updatable. That is, you can use them in statements such as UPDATE, DELETE, or INSERT to update the contents of the underlying table. For a view to be updatable, there must be a one-to relationship between the rows in the view and the rows in the underlying table. There are also certain other constructs that make a view non-updatable. To be more specific, a view is not updatable if it contains any of the following:

    • Aggregate functions (SUM(), MIN(), MAX(), COUNT()

      文章整理:西部数码--专业提供域名注册虚拟主机服务
      http://www.west263.com
      以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!