CREATE TABLE IF NOT EXISTS ... AS SELECT: Tạo bảng và chèn dữ liệu cùng lúc
MySQL cho phép tạo bảng mới dựa trên kết quả của một truy vấn SELECT bằng cú pháp CREATE TABLE ... AS SELECT. Kết hợp với IF NOT EXISTS để tránh lỗi nếu bảng đã tồn tại.
Cú pháp
CREATE TABLE IF NOT EXISTS table_name (
col1 datatype,
col2 datatype,
...
) AS SELECT value1 AS col1, value2 AS col2, ...;
Ví dụ thực tế
mysql> CREATE TABLE IF NOT EXISTS DemoTable (
id INT,
FirstName VARCHAR(20),
LastName VARCHAR(20)
) AS SELECT 100 AS id, 'John' AS FirstName, 'Smith' AS LastName;
Kết quả: Query OK, 1 row affected
Kiểm tra dữ liệu
mysql> SELECT * FROM DemoTable;
+------+-----------+----------+ | id | FirstName | LastName | +------+-----------+----------+ | 100 | John | Smith | +------+-----------+----------+
Đặc điểm quan trọng:
- Bảng được tạo với cấu trúc từ danh sách cột định nghĩa
- Dữ liệu được chèn từ mệnh đề
AS SELECT - Nếu bảng đã tồn tại: không tạo mới, không chèn dữ liệu (khác với
INSERT IGNORE) - Không copy indexes, constraints, AUTO_INCREMENT từ bảng nguồn
So sánh với INSERT INTO ... SELECT:
| Phương pháp | Bảng chưa tồn tại | Bảng đã tồn tại |
|---|---|---|
| CREATE TABLE IF NOT EXISTS ... AS SELECT | Tạo bảng + chèn dữ liệu | Bỏ qua (không chèn) |
| INSERT INTO ... SELECT | Lỗi | Chèn thêm dữ liệu |