Để tạo bảng tạm (temporary table) có cấu trúc y hệt một bảng hiện có (cột, kiểu dữ liệu, index, constraint), MySQL cung cấp cú pháp CREATE TEMPORARY TABLE ... LIKE ....
Ví dụ minh họa
Tạo bảng gốc:
mysql> create table DemoTable1 (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100)
);
Chèn dữ liệu:
mysql> insert into DemoTable1(Name) values('Chris');
mysql> insert into DemoTable1(Name) values('Robert');
mysql> insert into DemoTable1(Name) values('Mike');
mysql> insert into DemoTable1(Name) values('Sam');
Hiển thị bảng gốc:
mysql> select * from DemoTable1;
Kết quả:
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | Mike | | 4 | Sam | +----+--------+
Tạo bảng tạm LIKE bảng gốc
mysql> create temporary table DemoTable2 like DemoTable1;
Kiểm tra cấu trúc bảng tạm:
mysql> desc DemoTable2;
Kết quả (giống hệt DemoTable1):
+-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(100) | YES | | NULL | | +-------+--------------+------+-----+---------+----------------+
Giải thích:
CREATE TEMPORARY TABLE DemoTable2 LIKE DemoTable1: Sao chép **định nghĩa** (schema) hoàn toàn: cột, kiểu, NULL/NOT NULL, DEFAULT, AUTO_INCREMENT, PRIMARY KEY, INDEX, UNIQUE, FOREIGN KEY- Không sao chép dữ liệu - bảng tạm rỗng
- Bảng tạm chỉ tồn tại trong **session hiện tại**, tự động xóa khi ngắt kết nối
- Các session khác không thấy bảng tạm này (có thể trùng tên)
Ứng dụng: Xử lý trung gian phức tạp (ETL), chia query lớn thành bước nhỏ, lưu kết quả tạm để JOIN nhiều lần, tránh lock bảng gốc.