10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

26.1介绍

INFORMATION_SCHEMA提供对数据库的访问元数据, MySQL服务器的信息,如数据库或表的名称,列的数据类型,或访问权限。有时用于此信息的其他术语有数据字典而且系统目录

INFORMATION_SCHEMA使用笔记

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字符集utf8在哪里N至少64岁。MySQL使用此字符集的默认排序规则(utf8_general_ci)用于这些列上的所有搜索、排序、比较和其他字符串操作。

因为一些MySQL对象表示为文件,在INFORMATION_SCHEMA字符串列会受到文件系统大小写敏感性的影响。有关更多信息,请参见第10.8.7节“在INFORMATION_SCHEMA搜索中使用排序规则”

作为SHOW语句的替代方案

选择……从INFORMATION_SCHEMA语句的目的是作为一种更一致的方式来提供对各种提供的信息的访问显示MySQL支持的语句(显示数据库显示表,等等)。使用选择有这些优点,相比之下显示

  • 它符合Codd的规则,因为所有的访问都是在表上完成的。

  • 可以使用熟悉的语法选择语句,并且只需要学习一些表和列名。

  • 实现者不需要担心添加关键字。

  • 的结果可以过滤、排序、连接和转换INFORMATION_SCHEMA查询到应用程序需要的任何格式,例如要解析的数据结构或文本表示。

  • 这种技术与其他数据库系统的互操作性更强。例如,Oracle数据库用户熟悉Oracle数据字典中的查询表。

因为显示是熟悉的和广泛使用的,显示语句仍然是一种替代方法。事实上,随着实施INFORMATION_SCHEMA,有增强功能显示中描述的第26.8节“SHOW语句的扩展”

INFORMATION_SCHEMA和特权

对于大多数INFORMATION_SCHEMA表,每个MySQL用户都有权访问它们,但只能看到表中与该用户具有适当访问权限的对象对应的行。在某些情况下(例如,)ROUTINE_DEFINITIONINFORMATION_SCHEMA例程表),权限不足的用户参见.一些表有不同的特权要求;对于这些,在适用的表描述中提到了需求。例如,InnoDB表(名称以。开头的表)INNODB_)要求过程特权。

同样的特权也适用于从INFORMATION_SCHEMA浏览相同的信息显示语句。在任何一种情况下,您都必须拥有对象上的某些特权才能查看有关该对象的信息。

性能考虑

INFORMATION_SCHEMA从多个数据库中搜索信息的查询可能会花费很长时间并影响性能。要检查查询的效率,可以使用解释.有关使用解释输出调节INFORMATION_SCHEMA查询,看到第8.2.3节“优化INFORMATION_SCHEMA查询”

标准的考虑

的实现INFORMATION_SCHEMAMySQL中的表结构遵循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参考章节中的约定

中每个表和列的描述如下INFORMATION_SCHEMA.对于每一列,有三条信息:

  • INFORMATION_SCHEMA的名字控件中列的名称INFORMATION_SCHEMA表格这与标准SQL名称相对应,除非讲话现场说MySQL扩展。

  • 显示的名字表示最接近的等效字段名显示陈述,如果有的话。

  • 讲话在适用的情况下提供附加信息。如果这个字段是,表示列的值总是.如果这个字段说MySQL扩展,该列是对标准SQL的MySQL扩展。

许多部分表明显示语句等价于a选择检索信息的INFORMATION_SCHEMA.为显示语句,如果省略了类,则显示默认数据库的信息db_name子句中,您通常可以通过添加table_schema = schema ()条件的在哪里类检索信息的查询的子句INFORMATION_SCHEMA表格

相关信息

这些部分讨论额外的INFORMATION_SCHEMA相关主题: