在 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 臨時表名;
臨時表適合用于存儲中間結果或臨時數據,避免污染正式表空間。