sql >> Base de Datos >  >> RDS >> Mysql

Cómo duplicar tablas en MySQL

A veces, es posible que necesite copiar datos de una tabla a otra en MySQL o copiar tablas en MySQL. Aquí se explica cómo duplicar una tabla en MySQL. Puede usarlo para clonar una tabla en MySQL o copiar la estructura de la tabla, o incluso copiar una tabla de una base de datos a otra.

Cómo duplicar tablas en MySQL

Estos son los pasos para duplicar la tabla en MySQL. Hay diferentes casos de uso para copiar datos de una tabla a otra. Veremos cada uno de ellos en detalle.

MySQL Copiar datos de una tabla a una tabla nueva

Si necesita duplicar una tabla en MySQL en una tabla nueva, debe usar la instrucción CREATE TABLE y SELECT como se muestra a continuación

CREATE TABLE new_table 
SELECT column, column2, column3 
FROM
    existing_table;

Supongamos que tiene una tabla existente productos

mysql> select * from products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Aquí está la consulta SQL para copiar productos tabla en una nueva tabla llamada nuevos_productos

mysql> create table new_products
       select *
       from products;

mysql> select * from new_products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Es importante tener en cuenta que la nueva tabla se creará solo si no existe. De lo contrario, obtendrá un error. Para evitar recibir un error cuando duplica una tabla en MySQL, puede usar IF NOT EXIST en la declaración CREATE TABLE, como se muestra a continuación.

mysql> create table if not exist new_products
       select *
       from products;

Lectura adicional:Procedimiento almacenado de MySQL con parámetros

Para copiar solo datos parciales de una tabla a una tabla nueva, puede usar la condición WHERE en su declaración SELECT como se muestra

CREATE TABLE new_table 
SELECT column1, column2, column3 
FROM
    existing_table
WHERE
    conditions;

Aquí está la consulta SQL para copiar datos parciales de productos tabla en una nueva tabla llamada nuevos_productos2

mysql> create table new_products2
       select *
       from products
       where product_id=1;

mysql> select * from new_products2;
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
|          1 | iPhone 11    |   400 |
+------------+--------------+-------+

Lectura adicional:Cómo crear una clave principal compuesta en MySQL

MySQL Copiar estructura de tabla a nueva tabla

Las consultas anteriores solo copian tablas y datos. No copiarán objetos de tabla como clave principal, índices, restricciones, activadores. Para copiar la estructura y los datos de la tabla, debe usar la instrucción CREATE TABLE con la palabra clave LIKE, como se muestra a continuación

CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

Digamos que tiene un pedidos tabla con clave principal

mysql> describe orders;
+--------------+--------------+------+-----+-------------------+----------------+
| Field        | Type         | Null | Key | Default           | Extra          |
+--------------+--------------+------+-----+-------------------+----------------+
| id           | int(11)      | NO   | PRI | NULL              | auto_increment |
| product_name | varchar(255) | NO   |     | NULL              |                |
| order_date   | date         | YES  |     | NULL              |                |
| price        | int(11)      | NO   |     | NULL              |                |
| description  | text         | YES  |     | NULL              |                |
| created_at   | timestamp    | NO   |     | CURRENT_TIMESTAMP |                |
+--------------+--------------+------+-----+-------------------+----------------+

y desea copiar la estructura de pedidos a nuevos_pedidos mesa. Aquí está la consulta SQL para copiar la estructura de la tabla a la nueva tabla.

mysql> create table new_orders like orders;

mysql> describe new_orders;
+--------------+--------------+------+-----+-------------------+----------------+
| Field        | Type         | Null | Key | Default           | Extra          |
+--------------+--------------+------+-----+-------------------+----------------+
| id           | int(11)      | NO   | PRI | NULL              | auto_increment |
| product_name | varchar(255) | NO   |     | NULL              |                |
| order_date   | date         | YES  |     | NULL              |                |
| price        | int(11)      | NO   |     | NULL              |                |
| description  | text         | YES  |     | NULL              |                |
| created_at   | timestamp    | NO   |     | CURRENT_TIMESTAMP |                |
+--------------+--------------+------+-----+-------------------+----------------+

Lectura adicional:Cómo truncar una tabla en MySQL

MySQL Copiar datos de una tabla a una tabla existente

La declaración anterior creará una nueva tabla con la estructura de la tabla anterior. Luego, debe usar la declaración INSERT para copiar datos de la tabla anterior a la tabla nueva.

INSERT new_table
SELECT * FROM existing_table;

Aquí está la consulta SQL para copiar datos de pedidos a la tabla existente nuevos_pedidos

mysql> insert new_orders
       select * from orders;

mysql> select * from orders;
+----+--------------+------------+-------+-------------+---------------------+
| id | product_name | order_date | price | description | created_at          |
+----+--------------+------------+-------+-------------+---------------------+
|  1 | A            | 2020-07-01 |   150 | New product | 2020-06-01 00:00:00 |
|  2 | B            | 2020-07-01 |   235 | Old product | 2020-06-15 00:00:00 |
+----+--------------+------------+-------+-------------+---------------------+

Lectura adicional:MySQL DROP VIEW

Copiar tabla MySQL de una base de datos a otra

Si desea duplicar una tabla en MySQL de una base de datos a otra, simplemente incluya los nombres de la base de datos en los nombres de sus tablas, como se muestra a continuación en negrita

CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

La primera declaración duplicará la estructura de la tabla en MySQL desde la base de datos de origen (por ejemplo, source_db) a otra (por ejemplo, destination_db). La segunda instrucción copiará datos de una tabla a otra.

Reemplazar source_db y destination_db en consultas anteriores con bases de datos de origen y destino respectivamente.

Con suerte, este artículo lo ayudará a duplicar tablas en MySQL. Tenga cuidado cuando duplique una tabla en MySQL, con una gran cantidad de registros, ya que puede llevar mucho tiempo y recursos.

Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!