MySQLi - Bảng sao chép

Có thể có tình huống khi bạn cần một bản sao chính xác của một bảng và TẠO BẢNG ... CHỌN không phù hợp với mục đích của bạn vì bản sao phải bao gồm các chỉ mục, giá trị mặc định giống nhau, v.v.

Bạn có thể xử lý tình huống này bằng các bước sau:

  • Sử dụng SHOW CREATE TABLE để nhận câu lệnh CREATE TABLE xác định cấu trúc, chỉ mục và tất cả của bảng nguồn.

  • Sửa đổi câu lệnh để thay đổi tên bảng thành tên của bảng sao chép và thực hiện câu lệnh. Bằng cách này, bạn sẽ có bảng sao chép chính xác.

  • Theo tùy chọn, nếu bạn cũng cần sao chép nội dung bảng, hãy phát hành câu lệnh INSERT INTO ... SELECT.

Thí dụ

Hãy thử ví dụ sau để tạo bảng sao chép cho tutorials_inf.

Bước 1

Nhận cấu trúc hoàn chỉnh về bảng.

mysql> SHOW CREATE TABLE tutorials_inf \G;
*************************** 1. row ***************************
       Table: tutorials_inf
Create Table: CREATE TABLE `tutorials_inf` (
   `id` int(11) NOT NULL,
   `name` varchar(20) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `AUTHOR_INDEX` (`name`),
   UNIQUE KEY `NAME_INDEX` (`name`),
   KEY `id` (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1
1 row in set (0.05 sec)

ERROR: No query specified

Bước 2

Đổi tên bảng này và tạo một bảng khác.

mysql> CREATE TABLE tutorials_clone(
   -> id int(11) NOT NULL,
   -> name varchar(20) NOT NULL,
   -> PRIMARY KEY (id),
   > UNIQUE KEY AUTHOR_INDEX (name),
   -> UNIQUE KEY NAME_INDEX (name),
   ->  KEY id (id));
Query OK, 0 rows affected (1.80 sec)

Bước 3

Sau khi thực hiện bước 2, bạn sẽ tạo một bảng sao chép trong cơ sở dữ liệu của mình. Nếu bạn muốn sao chép dữ liệu từ bảng cũ thì bạn có thể thực hiện bằng cách sử dụng câu lệnh INSERT INTO ... SELECT.

mysql> INSERT INTO tutorials_clone(id,name) SELECT id,name from tutorials_inf;
Query OK, 4 rows affected (0.19 sec)
Records: 4  Duplicates: 0  Warnings: 0

Cuối cùng, bạn sẽ có bảng sao chép chính xác như bạn muốn.