繁体   English   中英

MySQL 显示临时表;

[英]MySQL SHOW TEMPORARY TABLES;

我正在学习 SQL 和 MySQL 5.7。 我想枚举所有表包括临时表!

但是当我查询 SHOW TABLES; 它仅显示非临时表。

如何列出所有表?

我还没有找到对此的直接答案 - 据我所知,没有办法(当前为 MySQL 8.0.31)列出您连接上的所有临时表。

您可以使用以下方法测试表的存在:

SELECT 1 FROM my_table WHERE 0;

如果您没有收到错误,则该表以某种形式存在(TEMPORARY、BASE TABLE 或 VIEW)。 要检查它是否是临时的,您可以使用:

SHOW TABLES IN my_db
WHERE Tables_in_my_db = "my_table"

(如果表名存在且不是临时的,则返回表名,或者也使用“FULL TABLES”返回表类型)或

SELECT table_type
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = "my_db" AND TABLE_NAME = "my_table";

(如果存在且不是临时的,则返回表类型)

因此,如果第一个测试未返回错误但未使用其他测试之一列出该表,则该表是临时的。

这无助于枚举临时表(我相信这可以完成 - 请参阅其他答案 - 如果表是 INNODB 但通常不是 MyISAM 例如),但它确实使您能够将表识别为临时表,或者如果你知道这个名字。

在 innodb 中你可以使用 e

 SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_TEMP%';

https://dev.mysql.com/doc/refman/5.7/en/innodb-information-schema-temp-table-info.html

https://dev.mysql.com/worklog/task/?id=648

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM