• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • SHOW CREATE VIEW语句

    SHOW CREATE VIEW view_name
    

    该语句显示CREATE VIEW创建命名视图的语句。

    mysql> SHOW CREATE VIEW v\G
    *************************** 1. row 	***************************
                    View	: v
             Create View	: CREATE ALGORITHM=UNDEFINED
                          DEFINER=`bob`@`localhost`
                          SQL SECURITY DEFINER VIEW
                          `v` AS select 1 AS `a`,2 AS `b`
    character_set_client	: utf8mb4
    collation_connection	: utf8mb4_0900_ai_ci
    

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

    使用时SHOW CREATE VIEW需要SHOW VIEW特权,并且需要相关SELECT视图的特权。

    INFORMATION_SCHEMAVIEWS表格中也提供了参见信息。请参见“ INFORMATION_SCHEMA VIEWS表”。

    MySQL使您可以使用不同的sql_mode设置来告诉服务器要支持的SQL语法类型。例如,您可以使用ANSISQL模式来确保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.01 sec)
    
    mysql> SHOW CREATE VIEW test.v\G
    *************************** 1. row 	***************************
                    View	: v
             Create View	: CREATE VIEW "v" AS select concat('a','b') AS "col1"
    ...
    1 row in set (0.00 sec)
    

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