Bảng tạm (TEMPORARY TABLE) trong MySQL chỉ tồn tại trong phiên làm việc hiện tại (session) và tự động bị xóa khi ngắt kết nối. Điều này rất hữu ích cho các phép tính trung gian, xử lý dữ liệu tạm thời mà không làm rác cơ sở dữ liệu.
Cú pháp
CREATE TEMPORARY TABLE ten_bang_tam (
ten_cot DATETIME
);
Ví dụ minh họa
Tạo bảng tạm DemoTable với cột DueDate:
CREATE TEMPORARY TABLE DemoTable (
DueDate DATETIME
);
Chèn các giá trị ngày giờ khác nhau:
INSERT INTO DemoTable VALUES (NOW()); -- Thời điểm hiện tại (date + time)
INSERT INTO DemoTable VALUES (CURDATE()); -- Ngày hiện tại (time = 00:00:00)
INSERT INTO DemoTable VALUES ('2018-01-21'); -- Ngày cụ thể
INSERT INTO DemoTable VALUES ('2019-12-31'); -- Ngày cụ thể
Kết quả truy vấn
SELECT * FROM DemoTable;
| DueDate |
|---|
| 2019-10-27 18:07:41 |
| 2019-10-27 00:00:00 |
| 2018-01-21 00:00:00 |
| 2019-12-31 00:00:00 |
Đặc điểm quan trọng
- Bảng tạm chỉ hiển thị cho session tạo ra nó; các session khác không thấy.
- Có thể trùng tên với bảng thường mà không gây xung đột.
- Tự động xóa khi session kết thúc (hoặc dùng
DROP TEMPORARY TABLEđể xóa thủ công). - Không thể tham chiếu bảng tạm nhiều lần trong cùng một truy vấn (trước MySQL 8.0.13).
Ứng dụng thực tế: Lưu trữ kết quả trung gian của stored procedure, xử lý batch data, hoặc chia nhỏ truy vấn phức tạp.