INFORMATION_SCHEMA
提供对数据库的访问元数据, MySQL服务器的信息,如数据库或表的名称,列的数据类型,或访问权限。有时用于此信息的其他术语有数据字典而且系统目录.
INFORMATION_SCHEMA
是每个MySQL实例中的一个数据库,它存储MySQL服务器维护的所有其他数据库的信息。的INFORMATION_SCHEMA
数据库包含几个只读表。它们实际上是视图,而不是基表,因此没有与它们相关的文件,并且不能在它们上设置触发器。另外,没有使用该名称的数据库目录。
尽管你可以选择INFORMATION_SCHEMA
作为默认数据库使用
语句中,只能读取表的内容,不能执行插入
,更新
,或删除
他们的操作。
下面是一个从。检索信息的语句示例INFORMATION_SCHEMA
:
mysql> SELECT table_name, table_type, engine FROMWHERE table_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节,“InnoDB表的信息模式”信息
INFORMATION_SCHEMA
线程池插件的特定表:第26.5节,“INFORMATION_SCHEMA线程池表”信息
INFORMATION_SCHEMA
特定于CONNECTION_CONTROL
插件:第26.6节,“INFORMATION_SCHEMA连接控制表”经常被问到的问题的答案
INFORMATION_SCHEMA
数据库:第A.7节,“MySQL 8.0 FAQ: INFORMATION_SCHEMA”INFORMATION_SCHEMA
查询和优化器:第8.2.3节“优化INFORMATION_SCHEMA查询”整理的效果
INFORMATION_SCHEMA
比较:第10.8.7节“在INFORMATION_SCHEMA搜索中使用排序规则”