MySQL 显示临时表;

问题描述 投票:0回答:3

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

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

如何列出所有表格?

mysql sql
3个回答
1
投票

我还没有找到这个问题的直接答案 - 据我所知,没有办法(当前是 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),但它确实使您能够将表识别为临时表或其他表如果你知道名字的话。


0
投票

您可以使用这样的选择

SELECT * FROM INFORMATION_SCHEMA.TEMPORARY_TABLES WHERE TABLE_SCHEMA = "my_db"

显示在此会话 ID 中创建的所有临时表。不显示其他会话。


-3
投票

在 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

© www.soinside.com 2019 - 2024. All rights reserved.