我的MySQL数据库包含多个使用不同存储引擎(具体来说是MyISAM和InnoDB)的表。如何查询哪些表使用了哪种引擎?
SHOW TABLE STATUS WHERE Name = 'xxx'
这将为您提供(除其他外)一个名为Engine
的列,这正是您想要的。
要显示数据库中所有表及其引擎的列表,请使用此SQL查询:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
将dbname
替换为您的数据库名称。
SELECT ENGINE
FROM information_schema.TABLES
WHERE
TABLE_SCHEMA = ''
AND TABLE_NAME = ''
- userlondCOUNT(*)
和GROUP BY
等操作。 - BrandonSHOW CREATE TABLE <tablename>;
SHOW TABLE STATUS
比较易于解析,但不如本文所介绍的方式易读。
或者只需运行以下代码:
show table status;
这将列出您的数据库中所有表及其相关细节。
对Jocker的回答进行了一些微调(我想以评论的形式发布,但我还没有足够的威望):
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
这将排除 MySQL 视图列表,因为它们没有引擎。
SHOW CREATE TABLE <tablename>\G
相比于输出结果,它会使格式更加美观。
SHOW CREATE TABLE <tablename>;
\G
技巧在许多其他查询/命令中也很有用。
mysqlshow -i <database_name>
将会展示一个特定数据库中所有表的信息。
mysqlshow -i <database_name> <table_name>
以下是获取单个或匹配表格状态的可能是最短的另一种方法:
SHOW TABLE STATUS LIKE 'table';
SHOW TABLE STATUS LIKE 'field_data_%';
show full columns from t1
命令时引擎信息没有显示出来呢? - Pacerier