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
EmployeeIdtrong bảng mới chỉ làINTthườ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.