MySQL 中的临时表是一种特殊的数据库表,它只存在于当前会话中,当会话结束时,临时表会被自动删除。临时表通常用于存储中间结果集,以便在查询过程中进行复杂的计算或数据处理。
MySQL 中有两种类型的临时表:
CREATE TEMPORARY TABLE
语句创建的表,只对当前会话可见。CREATE GLOBAL TEMPORARY TABLE
语句创建的表,对所有会话可见,但每个会话只能看到自己的数据。临时表常用于以下场景:
要查看当前会话中的临时表,可以使用以下 SQL 查询:
SHOW TABLES LIKE '%tmp%';
这个查询会列出所有名称中包含 tmp
的表,其中包括临时表。
问题:为什么临时表中的数据在会话结束后没有被自动删除?
原因:
解决方法:
以下是一个创建和使用临时表的示例:
-- 创建临时表
CREATE TEMPORARY TABLE temp_table (
id INT PRIMARY KEY,
name VARCHAR(255)
);
-- 插入数据
INSERT INTO temp_table (id, name) VALUES (1, 'Alice'), (2, 'Bob');
-- 查询临时表
SELECT * FROM temp_table;
-- 删除临时表(会话结束后自动删除)
领取专属 10元无门槛券
手把手带您无忧上云