的的观点
表提供关于数据库中视图的信息。你必须有显示视图
访问该表的权限。
的的观点
表有这些列:
TABLE_CATALOG
视图所属的目录的名称。这个值总是
def
.TABLE_SCHEMA
视图所属的模式(数据库)的名称。
TABLE_NAME
视图的名称。
VIEW_DEFINITION
的
选择
提供视图定义的语句。这一栏包含了你在创建表
列显示创建视图
产生。跳过前面的单词选择
跳过单词检查选项
.假设最初的表述是:CREATE VIEW v AS SELECT s1 FROM s1 WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION
然后视图定义看起来像这样:
SELECT s2,s1 FROM WHERE s1 >
CHECK_OPTION
的值
CHECK_OPTION
属性。取值为没有一个
,级联
,或当地的
.IS_UPDATABLE
MySQL设置了一个标志,称为视图更新标志
创建视图
时间。旗帜设置为是的
(真正的)如果更新
而且删除
(以及类似的操作)对于视图是合法的。否则,将标志设置为没有
(假)。的IS_UPDATABLE
列的观点
表显示此标志的状态。如果一个视图是不可更新的,语句
更新
,删除
,插入
是非法的,并且被拒绝。(即使视图是可更新的,也不可能插入到其中;详细信息请参见第23.5.3节“可更新和可插入视图”)。的
IS_UPDATABLE
Flag可能是不可靠的,如果一个视图依赖于一个或多个其他视图,并且这些底层视图中的一个被更新。不管IS_UPDATABLE
值时,服务器将跟踪视图的可更新性,并正确拒绝对不可更新视图的数据更改操作。如果IS_UPDATABLE
视图的值由于底层视图的更改而变得不准确,可以通过删除和重新创建视图来更新该值。定义者
创建视图的用户的帐户,在
'
格式。user_name
“@”host_name
'SECURITY_TYPE
视图
SQL安全
的特点。取值为定义者
或调用程序
.CHARACTER_SET_CLIENT
的会话值
character_set_client
视图创建时的系统变量。COLLATION_CONNECTION
的会话值
collation_connection
视图创建时的系统变量。
笔记
MySQL允许不同sql_mode
设置来告诉服务器要支持的SQL语法类型。例如,您可以使用ANSI
SQL模式,以确保MySQL正确解释标准SQL连接操作符,双栏(||
)。如果随后创建连接项的视图,则可能会担心更改sql_mode
设置为不同于ANSI
可能导致视图无效。但事实并非如此。无论您如何编写视图定义,MySQL总是以同样的方式以规范的形式存储它。下面是一个示例,它展示了服务器如何将双栏连接操作符更改为aCONCAT ()
功能:
SET sql_mode = 'ANSI';查询OK, 0 rows affected (0.00 sec) mysql> CREATE VIEW test。SELECT 'a' | ' | 'b' AS col1;查询OK, 0 rows affected (0.00 sec) mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA。TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';+----------------------------------+ | VIEW_DEFINITION | +----------------------------------+ | 选择concat (a, b)的col1 ` | +----------------------------------+ 1行集(0.00秒)
以规范形式存储视图定义的优点是稍后对的值所做的更改sql_mode
不要从视图影响结果。然而,一个附加的结果是注释在选择
被服务器从定义中剥离。