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