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

Tạo bảng MySQL mới có cấu trúc y hệt bảng cũ (LIKE)


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

  • LIKE sao chép: định nghĩa cột, index, engine, charset, collation.
  • LIKE KHÔNG sao chép: AUTO_INCREMENT value, 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 ✓ ✓ ✗