在 MySQL 中,临时表是一种只在当前会话中存在的表,会话结束后会自动删除。创建临时表的语法与普通表类似,但需要使用 TEMPORARY 关键字。
CREATE TEMPORARY TABLE 临时表名 (
列名1 数据类型 [约束],
列名2 数据类型 [约束],
...
);
-
创建一个简单的临时表:
CREATE TEMPORARY TABLE temp_employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
salary DECIMAL(10,2)
);
-
从现有表复制结构和数据到临时表:
CREATE TEMPORARY TABLE temp_students
AS SELECT * FROM students WHERE age > 18;
CREATE TEMPORARY TABLE temp_teachers
AS SELECT * FROM teachers WHERE 1=0;
-
仅对当前会话可见,其他会话无法访问
-
当会话结束(断开连接)时,临时表会自动删除
-
可以与普通表同名,但查询时会优先访问临时表
-
不能使用
ALTER TABLE 对临时表进行重命名
如果需要在会话结束前删除临时表,可以使用:
DROP TEMPORARY TABLE IF EXISTS 临时表名;
临时表适合用于存储中间结果或临时数据,避免污染正式表空间。