该TABLES
表提供有关数据库中表的信息。
该TABLES
表有以下列:
TABLE_CATALOG
表所属目录的名称。该值始终为
def
.TABLE_SCHEMA
表所属的模式(数据库)的名称。
TABLE_NAME
表的名称。
TABLE_TYPE
BASE TABLE
对于表、VIEW
视图或 表。SYSTEM VIEW
INFORMATION_SCHEMA
该
TABLES
表不列出TEMPORARY
表。ENGINE
表的存储引擎。请参阅 第 14 章,InnoDB 存储引擎和 第 15 章,替代存储引擎。
对于分区表,
ENGINE
显示所有分区使用的存储引擎的名称。VERSION
.frm
表文件 的版本号。ROW_FORMAT
行存储格式 (
Fixed
,Dynamic
,Compressed
,Redundant
,Compact
)。对于MyISAM
表,Dynamic
对应于myisamchk -dvv报告的内容Packed
。InnoDB
表格格式要么是要么Redundant
当Compact
使用Antelope
文件格式时,要么Compressed
要么Dynamic
当使用Barracuda
文件格式时。TABLE_ROWS
行数。一些存储引擎(例如
MyISAM
)存储确切的计数。对于其他存储引擎,例如InnoDB
,该值是一个近似值,可能与实际值相差 40% 到 50%。在这种情况下,使用SELECT COUNT(*)
以获得准确的计数。TABLE_ROWS
用于表格NULL
。INFORMATION_SCHEMA
AVG_ROW_LENGTH
平均行长度。
有关信息,请参阅本节末尾的注释。
DATA_LENGTH
对于
MyISAM
,DATA_LENGTH
是数据文件的长度,以字节为单位。对于
InnoDB
,DATA_LENGTH
是为聚集索引分配的近似空间量,以字节为单位。具体来说,它是聚簇索引大小(以页为单位)乘以InnoDB
页面大小。有关其他存储引擎的信息,请参阅本节末尾的注释。
MAX_DATA_LENGTH
对于
MyISAM
,MAX_DATA_LENGTH
是数据文件的最大长度。在给定所用数据指针大小的情况下,这是可以存储在表中的数据的总字节数。未用于
InnoDB
。有关其他存储引擎的信息,请参阅本节末尾的注释。
INDEX_LENGTH
对于
MyISAM
,INDEX_LENGTH
是索引文件的长度,以字节为单位。对于
InnoDB
,INDEX_LENGTH
是为非聚集索引分配的近似空间量,以字节为单位。具体来说,它是非聚集索引大小的总和(以页为单位)乘以InnoDB
页面大小。有关其他存储引擎的信息,请参阅本节末尾的注释。
DATA_FREE
已分配但未使用的字节数。
InnoDB
tables 报告表所属的表空间的可用空间。对于位于共享表空间中的表,这是共享表空间的可用空间。如果您使用多个表空间并且该表有自己的表空间,则可用空间仅供该表使用。空闲空间是指完全空闲区中的字节数减去安全余量。即使可用空间显示为 0,也可以插入行,只要不需要分配新的盘区。对于 NDB Cluster,
DATA_FREE
显示磁盘上为磁盘数据表或磁盘片段分配但未使用的空间。(内存中数据资源使用情况按DATA_LENGTH
列报告。)对于分区表,这个值只是一个估计值,可能不是绝对正确的。在这种情况下,获取此信息的更准确方法是查询
INFORMATION_SCHEMA
PARTITIONS
表,如本例所示:SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'mytable';
有关详细信息,请参阅 第 21.3.14 节,“INFORMATION_SCHEMA PARTITIONS 表”。
AUTO_INCREMENT
下一个
AUTO_INCREMENT
值。CREATE_TIME
创建表时。
在 MySQL 5.6.25 之前,对于分区
InnoDB
表,该CREATE_TIME
列显示NULL
. 该列显示了 MySQL 5.6.25 及更高版本中此类表的正确建表时间。(漏洞 #17299181,漏洞 #69990)UPDATE_TIME
上次更新数据文件的时间。对于某些存储引擎,此值为
NULL
. 例如, 在其系统表空间InnoDB
中存储多个表, 并且数据文件时间戳不适用。即使使用 file-per-table模式,每个表都在一个单独的 文件中, 更改缓冲 也会延迟写入数据文件,因此文件修改时间与上次插入、更新或删除的时间不同。对于,使用数据文件时间戳;但是,在 Windows 上,时间戳不会被更新更新,因此该值不准确。InnoDB
.ibd
MyISAM
对于分区
InnoDB
表,UPDATE_TIME
总是NULL
.CHECK_TIME
上次检查表格的时间。这次并非所有存储引擎都更新,在这种情况下,值始终为
NULL
。对于分区
InnoDB
表,CHECK_TIME
总是NULL
.TABLE_COLLATION
表默认排序规则。输出没有明确列出表默认字符集,但排序规则名称以字符集名称开头。
CHECKSUM
实时校验和值(如果有)。
CREATE_OPTIONS
与 一起使用的额外选项
CREATE TABLE
。CREATE_OPTIONS
显示partitioned
分区表。在禁用严格模式的情况下 创建表时 ,如果不支持指定的行格式,则使用存储引擎的默认行格式。表的实际行格式在
ROW_FORMAT
列中报告。CREATE_OPTIONS
显示CREATE TABLE
语句中指定的行格式。当更改表的存储引擎时,不适用于新存储引擎的表选项将保留在表定义中,以便在必要时将表及其先前定义的选项恢复为原始存储引擎。该
CREATE_OPTIONS
列可能会显示保留的选项。TABLE_COMMENT
创建表时使用的注释(或有关 MySQL 无法访问表信息的原因的信息)。
笔记
对于
NDB
表,此语句的输出显示AVG_ROW_LENGTH
和 列的适当值,但不考虑列DATA_LENGTH
除外。BLOB
对于
NDB
表格,DATA_LENGTH
仅包括存储在主内存中的数据;和MAX_DATA_LENGTH
列DATA_FREE
适用于磁盘数据。对于 NDB Cluster 磁盘数据表,
MAX_DATA_LENGTH
显示为磁盘数据表或片段的磁盘部分分配的空间。(内存中数据资源使用情况按DATA_LENGTH
列报告。)对于
MEMORY
表,DATA_LENGTH
、MAX_DATA_LENGTH
和INDEX_LENGTH
值近似于实际分配的内存量。分配算法大量保留内存以减少分配操作的次数。对于视图,除了 指示视图名称和 says之外的所有
TABLES
列 。NULL
TABLE_NAME
TABLE_COMMENT
VIEW
表信息也可从
SHOW TABLE STATUS
and
SHOW TABLES
语句中获得。请参阅
第 13.7.5.37 节,“SHOW TABLE STATUS 语句”和
第 13.7.5.38 节,“SHOW TABLES 语句”。以下语句是等效的:
SELECT
TABLE_NAME, ENGINE, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH,
DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT,
CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, CHECKSUM,
CREATE_OPTIONS, TABLE_COMMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'db_name'
[AND table_name LIKE 'wild']
SHOW TABLE STATUS
FROM db_name
[LIKE 'wild']
以下语句是等效的:
SELECT
TABLE_NAME, TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'db_name'
[AND table_name LIKE 'wild']
SHOW FULL TABLES
FROM db_name
[LIKE 'wild']