Sử dụng CREATE TABLE ... LIKE để sao chép cấu trúc bảng (schema), sau đó INSERT ... SELECT để sao chép dữ liệu.
Cú pháp
-- Chỉ sao chép cấu trúc CREATE TABLE new_table LIKE old_table; -- Sao chép cả dữ liệu INSERT INTO new_table SELECT * FROM old_table;
Ví dụ minh họa
mysql> CREATE TABLE WholeWordMatchDemo (Words VARCHAR(200));
Query OK, 0 rows affected (0.84 sec)
mysql> INSERT INTO WholeWordMatchDemo VALUES
('My Name is John'), ('Carol'), ('My Name is Johnson');
Query OK, 3 rows affected
Tạo bảng mới y hệt cấu trúc:
mysql> CREATE TABLE NewTableDuplicate LIKE WholeWordMatchDemo; Query OK, 0 rows affected (0.62 sec) mysql> SHOW CREATE TABLE NewTableDuplicate; +-------------------+----------------------------------------------------------------------------------+ | Table | Create Table | +-------------------+----------------------------------------------------------------------------------+ | NewTableDuplicate | CREATE TABLE `newtableduplicate` (`Words` varchar(200) DEFAULT NULL) ENGINE=InnoDB ... | +-------------------+----------------------------------------------------------------------------------+
Sao chép dữ liệu:
mysql> INSERT INTO NewTableDuplicate SELECT * FROM WholeWordMatchDemo; Query OK, 3 rows affected (0.19 sec) mysql> SELECT * FROM NewTableDuplicate; +----------------------+ | Words | +----------------------+ | My Name is John | | Carol | | My Name is Johnson | +----------------------+
Lưu ý quan trọng
LIKEsao chép: định nghĩa cột, index, engine, charset, collation.LIKEKHÔNG sao chép:AUTO_INCREMENTvalue,DATA DIRECTORY,INDEX DIRECTORY, foreign key constraints (trong một số phiên bản).- Để sao chép hoàn toàn包括 dữ liệu một lệnh:
CREATE TABLE new_table AS SELECT * FROM old_table(nhưng mất index, PK, FK).
Tóm tắt
| Phương pháp | Cấu trúc | Dữ liệu | Index/PK/FK |
|---|---|---|---|
| CREATE ... LIKE + INSERT SELECT | ✓ | ✓ | ✓ (gần như hoàn toàn) |
| CREATE ... AS SELECT | ✓ | ✓ | ✗ |