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

Tạo bảng nếu chưa tồn tại và chèn dữ liệu trong cùng một truy vấn MySQL

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ápBảng chưa tồn tạiBảng đã tồn tại
CREATE TABLE IF NOT EXISTS ... AS SELECTTạo bảng + chèn dữ liệuBỏ qua (không chèn)
INSERT INTO ... SELECTLỗiChèn thêm dữ liệu