INFORMATION_SCHEMA
提供对数据库的访问元数据,关于MySQL服务器的信息,如数据库或表的名称,列的数据类型,或访问权限。有时用于此信息的其他术语是数据字典而且系统目录.
INFORMATION_SCHEMA
是每个MySQL实例中的一个数据库,它存储了MySQL服务器维护的所有其他数据库的信息。的INFORMATION_SCHEMA
数据库包含几个只读表。它们实际上是视图,而不是基表,因此没有与它们相关联的文件,并且您不能在它们上设置触发器。另外,没有此名称的数据库目录。
尽管你可以选择INFORMATION_SCHEMA
作为默认数据库使用
语句时,只能读取表的内容,不能执行插入
,更新
,或删除
对它们的操作。
下面是一个检索信息的语句示例INFORMATION_SCHEMA
:
mysql> SELECT table_name, table_type, engine FROM information_schematable_schema = 'db5'的表+------------+------------+--------+ | table_name | table_type |引擎 | +------------+------------+--------+ | 颗|基表| InnoDB | | fk2 |基表| InnoDB | | goto |基表| MyISAM | |进入|基表| MyISAM | | k |基表| MyISAM | |科尔|基表| MyISAM | | |环基表| MyISAM | | pk |基表| InnoDB | | t |基表| MyISAM | | t2 |基表| MyISAM | | t3 |基表| MyISAM | | t7 |基表| MyISAM | | |表基本表| MyISAM | |v | VIEW | NULL | | v2 | VIEW | NULL | | v3 | VIEW | NULL | | v56 | VIEW | NULL | +------------+------------+--------+ 17 rows in set (0.01 sec)
解释:该语句请求数据库中所有表的列表db5跑车
,只显示了三条信息:表的名称、类型和存储引擎。
字符列的定义(例如,表。TABLE_NAME
)一般为VARCHAR (
在哪里N
字符集utf8N
至少是64岁。MySQL对这个字符集使用默认的排序规则(utf8_general_ci
)用于这些列上的所有搜索、排序、比较和其他字符串操作。
由于一些MySQL对象表示为文件,在INFORMATION_SCHEMA
字符串列可能受到文件系统大小写敏感性的影响。有关更多信息,请参见章节10.8.7,“在INFORMATION_SCHEMA搜索中使用排序规则”.
的选择……从INFORMATION_SCHEMA
语句的目的是作为一种更一致的方式来提供对各种提供的信息的访问显示
MySQL支持的语句(显示数据库
,显示表
,等等)。使用选择
有这些优势,相比显示
:
它符合Codd的规则,因为所有访问都是在表上完成的。
类的熟悉语法
选择
语句,并且只需要学习一些表和列名。实现者不需要担心添加关键字。
的结果进行筛选、排序、连接和转换
INFORMATION_SCHEMA
查询为应用程序需要的任何格式,比如要解析的数据结构或文本表示形式。这种技术与其他数据库系统的互操作性更强。例如,Oracle数据库用户熟悉Oracle数据字典中的查询表。
因为显示
是人们所熟悉和广泛使用的显示
声明仍然是一种选择。其实是随着实施的INFORMATION_SCHEMA
,有增强功能显示
如在第26.8节,SHOW语句的扩展.
对于大多数INFORMATION_SCHEMA
表,每个MySQL用户都有权限访问它们,但只能看到表中与用户具有适当访问权限的对象对应的行。在某些情况下(例如,ROUTINE_DEFINITION
中的列。INFORMATION_SCHEMA
例程
表),权限不足的用户请参见零
.一些表有不同的特权要求;对于这些,需求在适用的表格描述中有所提及。例如,InnoDB
表(名称以。开头的表INNODB_
)要求过程
特权。
同样的特权适用于从INFORMATION_SCHEMA
浏览相同的信息显示
语句。在任何一种情况下,您都必须对对象具有某些特权才能查看有关它的信息。
INFORMATION_SCHEMA
从多个数据库搜索信息的查询可能会花费很长时间并影响性能。要检查查询的效率,可以使用解释
.有关使用解释
要调优的输出INFORMATION_SCHEMA
查询,看到章节8.2.3,“优化INFORMATION_SCHEMA查询”.
的实现。INFORMATION_SCHEMA
MySQL中的表结构遵循ANSI/ISO SQL:2003标准第11部分图式.我们的目的是大致遵从SQL:2003的核心特性F021基本信息模式.
SQL Server 2000的用户(它也遵循这个标准)可能会注意到一个很强的相似性。然而,MySQL省略了许多与我们的实现无关的列,并添加了特定于MySQL的列。的列就是这样一个添加的列引擎
中的列。INFORMATION_SCHEMA
表
表格
尽管其他dbms使用各种各样的名称,比如syscat
或系统
,标准名称为INFORMATION_SCHEMA
.
为了避免使用标准或DB2、SQL Server或Oracle中保留的任何名称,我们更改了标记的一些列的名称”MySQL扩展”.(例如,我们改变了排序
来TABLE_COLLATION
在表
表)。请参阅本文末尾的保留词列表:https://web.archive.org/web/20070428032454/http://www.dbazine.com/db2/db2-disarticles/gulutzan5.
中每个表和列的描述如下INFORMATION_SCHEMA
.对于每一列,有三条信息:
许多部分指出了显示
语句等价于a选择
检索信息的INFORMATION_SCHEMA
.为显示
属性时显示默认数据库信息的语句从
子句中,通常可以通过添加db_name
table_schema = schema ()
的条件。在哪里
子句中检索信息的查询INFORMATION_SCHEMA
表格
本节将讨论其他INFORMATION_SCHEMA
相关主题:
信息
INFORMATION_SCHEMA
特定于InnoDB
存储引擎:章节26.4,“INFORMATION_SCHEMA InnoDB表”信息
INFORMATION_SCHEMA
特定于线程池插件的表:第26.5节,“INFORMATION_SCHEMA线程池表”信息
INFORMATION_SCHEMA
特定于CONNECTION_CONTROL
插件:第26.6节,“INFORMATION_SCHEMA连接控制表”经常被问到的问题的答案
INFORMATION_SCHEMA
数据库:章节A.7,“MySQL 8.0常见问题:INFORMATION_SCHEMA”INFORMATION_SCHEMA
查询和优化器:章节8.2.3,“优化INFORMATION_SCHEMA查询”整理的效果
INFORMATION_SCHEMA
比较:章节10.8.7,“在INFORMATION_SCHEMA搜索中使用排序规则”