• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • VIEWS表

    VIEWS表提供有关数据库中的视图的信息。您必须具有SHOW VIEW访问此表的权限。

    VIEWS表包含以下列:

    • TABLE_CATALOG

      该视图所属的目录的名称。此值始终为def

    • TABLE_SCHEMA

      视图所属的架构(数据库)的名称。

    • TABLE_NAME

      视图的名称。

    • VIEW_DEFINITION

      SELECT提供该视图的定义语句。该列包含您在生成的Create Table列中看到的大部分内容SHOW CREATE VIEW。跳过前面的单词,SELECT然后跳过这些单词WITH CHECK OPTION。假设原始语句为:

      CREATE VIEW v AS
        SELECT s2,s1 FROM t
        WHERE s1 > 5
        ORDER BY s1
        WITH CHECK OPTION;
      

      然后,视图定义如下所示:

      SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
      
    • CHECK_OPTION

      CHECK_OPTION属性的值。值中的一个NONECASCADELOCAL

    • IS_UPDATABLE

      MySQL会设置一个标志,称为视图可更新性标志CREATE VIEWYES如果UPDATE和和DELETE(以及类似的操作)对该视图合法,则将该标志设置为(true)。否则,该标志设置为NO(false)。表中的IS_UPDATABLEVIEWS显示此标志的状态。这意味着服务器始终知道视图是否可更新。

      如果视图是不可更新的,这样的语句UPDATEDELETE以及INSERT是非法的,将被拒绝。(即使视图是可更新的,也可能无法插入其中;有关详细信息,请参见“更新和插入视图”。)

    • DEFINER

      创建视图的用户的帐户,格式。'user_name'@'host_name'

    • SECURITY_TYPE

      视图SQL SECURITY特征。值为DEFINER或之一INVOKER

    • CHARACTER_SET_CLIENT

      character_set_client创建视图时系统变量的会话值。

    • COLLATION_CONNECTION

      collation_connection创建视图时系统变量的会话值。

    注意

    MySQL允许不同的sql_mode设置来告诉服务器要支持的SQL语法类型。例如,您可以使用ANSI SQL模式来确保MySQL ||在您的查询中正确解释标准的SQL串联运算符,即双杠()。如果然后创建一个将项目串联在一起的视图,则可能会担心将sql_mode设置更改为一个不同的值ANSI可能会导致该视图无效。但这种情况并非如此。不管您如何写视图定义,MySQL始终以规范的方式以相同的方式存储它。这是一个示例,显示服务器如何将双杠串联运算符更改为CONCAT()函数:

    mysql> SET sql_mode = 'ANSI';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
           WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
    +----------------------------------	+
    | VIEW_DEFINITION	|
    +----------------------------------	+
    | select concat('a','b') AS `col1`	|
    +----------------------------------	+
    1 row in set (0.00 sec)
    

    以规范形式存储视图定义的优点是,以后对的值进行的更改sql_mode不会影响视图的结果。但是,另一个后果是SELECT服务器将定义之前的注释删除。