-
Notifications
You must be signed in to change notification settings - Fork 111
VIEWS
xiaoboluo768 edited this page Jun 7, 2020
·
2 revisions
- 该表提供查询数据库中的视图相关的信息,查询该表的帐号需要拥有show view权限
- 该表为InnoDB引擎临时表
- 表定义语句
CREATE TEMPORARY TABLE `VIEWS` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`VIEW_DEFINITION` longtext NOT NULL,
`CHECK_OPTION` varchar(8) NOT NULL DEFAULT '',
`IS_UPDATABLE` varchar(3) NOT NULL DEFAULT '',
`DEFINER` varchar(93) NOT NULL DEFAULT '',
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
`COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
- 表字段含义
- TABLE_CATALOG:该字段总是为def
- TABLE_SCHEMA:表示视图所在的数据库名称
- TABLE_NAME:表示视图名称
- VIEW_DEFINITION:表示视图的定义语句SQL文本,注意,该文本经过了内部转换,并不是原始的定义语句,该列显示的内容与使用SHOW CREATE VIEW语句查看到的视图定义语句信息大部分相同(小部分不同的是,information_schema.views表中会自动去掉例如"WITH CHECK OPTION"的关键字,而show create view语句查询出来的信息中不会删除"WITH CHECK OPTION"关键字)
- CHECK_OPTION:创建视图时的CHECK OPTION选项值,有效值为:NONE、CASCADED、LOCAL
- IS_UPDATABLE:在创建视图时,MySQL会为视图设置一个是否可更新的标记,如果视图可执行DML语句(以及类似的操作),则该字段值为YES,否则为NO。
* 如果视图不可被更新,则执行DML语句时会报错 * 如果视图依赖于一个或多个其他视图,则IS_UPDATABLE标记在此场景下不可靠,在这种情况下,被依赖的基础视图中的某一个被更新,IS_UPDATABLE列的值并不会更新,但可以通过删除和重新创建视图来更新该值
- DEFINER:创建视图的账户名称
- SECURITY_TYPE:表示视图以谁的身份来执行,有效值为:DEFINER(表示以定义者的身份来执行)、INVOKER(表示调用者的身份来执行)
- CHARACTER_SET_CLIENT:表示创建视图时character_set_client系统变量的会话值
- COLLATION_CONNECTION:创建视图时collation_connection系统变量的会话值
- PS:MySQL可以使用不同的sql_mode的设置值来使server支持不同的SQL语法类型。例如:当使用"ANSI"值时,双竖杠"||" 被当作连接运算符(字符串拼接符)解析。在MySQL内部会把双竖杠"||" 转换为concat()函数对待,但在MySQL 5.7的默认sql_mode值下,双竖杠"||" 被解析为逻辑或关键字or。
- 表记录内容示例
admin@localhost : information_schema 06:22:17> select * from VIEWS where TABLE_SCHEMA='sys' limit 1\G;
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: sys
TABLE_NAME: host_summary
VIEW_DEFINITION: select if(isnull(`performance_schema`.`accounts`.`HOST`),'background',`performance_schema`.`accounts`.`HOST`) AS `host`,sum(`stmt`.`total`) AS \
`statements`,`sys`.`format_time`(sum(`stmt`.`total_latency`)) AS `statement_latency`,`sys`.`format_time`(ifnull((sum(`stmt`.`total_latency`) / nullif(sum(`stmt`.`total`),0)),0)) AS \
`statement_avg_latency`,sum(`stmt`.`full_scans`) AS `table_scans`,sum(`io`.`ios`) AS `file_ios`,`sys`.`format_time`(sum(`io`.`io_latency`)) AS \
`file_io_latency`,sum(`performance_schema`.`accounts`.`CURRENT_CONNECTIONS`) AS `current_connections`,sum(`performance_schema`.`accounts`.`TOTAL_CONNECTIONS`) \
AS `total_connections`,count(distinct `performance_schema`.`accounts`.`USER`) AS `unique_users`,`sys`.`format_bytes`(sum(`mem`.`current_allocated`)) AS \
`current_memory`,`sys`.`format_bytes`(sum(`mem`.`total_allocated`)) AS `total_memory_allocated` from (((`performance_schema`.`accounts` join `sys`.`x$host_summary_by_statement_latency` `stmt` \
on((`performance_schema`.`accounts`.`HOST` = `stmt`.`host`))) join `sys`.`x$host_summary_by_file_io` `io` on((`performance_schema`.`accounts`.`HOST` = `io`.`host`))) join\
`sys`.`x$memory_by_host_by_current_bytes` `mem` on((`performance_schema`.`accounts`.`HOST` = `mem`.`host`))) group by \
if(isnull(`performance_schema`.`accounts`.`HOST`),'background',`performance_schema`.`accounts`.`HOST`)
CHECK_OPTION: NONE
IS_UPDATABLE: NO
DEFINER: mysql.sys@localhost
SECURITY_TYPE: INVOKER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
1 row in set (0.02 sec)
上一篇:USER_PRIVILEGES表 |下一篇:INNODB_LOCKS表
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!