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

Cách lấy toàn bộ bản ghi từ bảng này chèn vào bảng khác trong MySQL

MySQL hỗ trợ tạo bảng mới **cấu trúc + dữ liệu** từ một bảng hiện có bằng cú pháp CREATE TABLE ... AS SELECT (viết tắt CREATE TABLE ... SELECT).

Cú pháp

CREATE TABLE ten_bang_moi AS SELECT * FROM ten_bang_cu;

Tương đương: CREATE TABLE ten_bang_moi SELECT * FROM ten_bang_cu; (từ khóa AS tùy chọn).

Ví dụ minh họa

Tạo bảng gốc có AUTO_INCREMENT bắt đầu từ 101:

mysql> CREATE TABLE DemoTable1518 (
    -> EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> EmployeeName VARCHAR(20)
    -> ) AUTO_INCREMENT = 101;

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1518(EmployeeName) VALUES
    -> ('John Doe'), ('John Smith'), ('David Miller');

Tạo bảng mới sao chép toàn bộ:

mysql> CREATE TABLE DemoTable1519 AS SELECT * FROM DemoTable1518;

Kết quả – dữ liệu y hệt (kể cả giá trị EmployeeId):

+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
|        101 | John Doe     |
|        102 | John Smith   |
|        103 | David Miller |
+------------+--------------+

Đặc điểm quan trọng

  • Bảng mới **không kế thừa**: PRIMARY KEY, AUTO_INCREMENT, INDEX, FOREIGN KEY, DEFAULT, COMMENT.
  • Cột EmployeeId trong bảng mới chỉ là INT thường, **không còn AUTO_INCREMENT**.
  • Để thêm lại khóa chính: ALTER TABLE DemoTable1519 ADD PRIMARY KEY (EmployeeId), MODIFY EmployeeId INT AUTO_INCREMENT;

Biến thể: Chèn vào bảng đã có sẵn

INSERT INTO bang_dich (cot1, cot2, ...) SELECT cot1, cot2, ... FROM bang_nguon;

Cách này giữ nguyên cấu trúc bảng đích, chỉ thêm dữ liệu.