Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào tôi có thể sao chép / nhân bản bảng cùng với dữ liệu, trình kích hoạt và chỉ mục của nó?

Để tạo một bảng mới giống như bảng cũ cùng với dữ liệu, trình kích hoạt và chỉ mục của nó, chúng ta cần chạy sau hai truy vấn

CREATE TABLE new_table LIKE old_table;
INSERT new_table SELECT * from old_table;

Ví dụ

mysql> Create table employee(ID INT PRIMARY KEY NOT NULL AUTO_INCREMENT, NAME VARCHAR(20));
Query OK, 0 rows affected (0.21 sec)

mysql> Describe employee;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| ID    | int(11)     | NO   | PRI | NULL    | auto_increment |
| NAME  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.07 sec)

mysql> Insert into employee(name) values('Gaurav'),('Raman');
Query OK, 2 rows affected (0.07 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> Select * from employee;
+----+--------+
| ID | NAME   |
+----+--------+
| 1  | Gaurav |
| 2  | Raman  |
+----+--------+
2 rows in set (0.00 sec)

Truy vấn dưới đây sẽ tạo bảng worker1 có cấu trúc tương tự như table worker. Nó có thể được kiểm tra bằng cách chạy truy vấn DESCRIBE.

mysql> create table employee1 like employee;
Query OK, 0 rows affected (0.19 sec)

mysql> describe employee1;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| ID    | int(11)     | NO   | PRI | NULL    | auto_increment |
| NAME  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.14 sec)

Bây giờ, truy vấn bên dưới sẽ chèn các giá trị giống như trong worker1 như trong worker có thể được kiểm tra như bên dưới

mysql> INSERT INTO employee1 select * from employee;
Query OK, 2 rows affected (0.09 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from employee1;
+----+--------+
| ID | NAME   |
+----+--------+
| 1  | Gaurav |
| 2  | Raman  |
+----+--------+
2 rows in set (0.00 sec)

Bằng cách này, chúng ta có thể tạo bản sao của bảng cùng với dữ liệu, trình kích hoạt và chỉ mục của nó.