Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo bảng tạm (temporary table) giống bảng thường với LIKE trong MySQL

Để 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.