Cloning a table in MySQL
Start your free 7-days trial now!
We can clone the structure of an existing table to a new table in MySQL using the general syntax:
CREATE TABLE new_table LIKE original_table;
Foreign key definitions, DATA DIRECTORY
, INDEX DIRECTORY
table options are not copied.
In order to populate the new_table
with all the data from the original_table
we can use the below:
INSERT INTO new_table SELECT * FROM original_table;
If we want to populate only certain records from the original_table
in new_table
:
INSERT INTO new_table SELECT * FROM original_table WHERE conditon;
Example
To copy the original table students
:
student_id | fname | lname | day_enrolled | age | username |
---|---|---|---|---|---|
1 | Sky | Towner | 2015-12-03 | 17 | stowner1 |
2 | Ben | Davis | 2016-04-20 | 19 | bdavis2 |
3 | Travis | Apple | 2018-08-14 | 18 | tapple3 |
4 | Arthur | David | 2016-04-01 | 16 | adavid4 |
5 | Benjamin | Town | 2014-01-01 | 17 | btown5 |
The above sample table can be created using the code here.
To create a clone of the original table students
and call it students_copy
:
CREATE TABLE students_copy LIKE students;
Query OK, 0 rows affected (0.02 sec)
To insert all records from students
into students_copy
:
INSERT INTO students_copy SELECT * FROM students;
Query OK, 5 rows affected (0.00 sec)Records: 5 Duplicates: 0 Warnings: 0
Now the students_copy
table has the same data as the original students
table:
SELECT * FROM students_copy;
+------------+----------+--------+--------------+------+----------+| student_id | fname | lname | day_enrolled | age | username |+------------+----------+--------+--------------+------+----------+| 1 | Sky | Towner | 2015-12-03 | 17 | stowner1 || 2 | Ben | Davis | 2016-04-20 | 19 | bdavis2 || 3 | Travis | Apple | 2018-08-14 | 18 | tapple3 || 4 | Arthur | David | 2016-04-01 | 16 | adavid4 || 5 | Benjamin | Town | 2014-01-01 | 17 | btown5 |+------------+----------+--------+--------------+------+----------+