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

Cómo copiar una tabla en MySQL

A veces es posible que necesite copiar la tabla en MySQL. Hay muchas formas diferentes de copiar una tabla en MySQL. Estos son los pasos para copiar la tabla en MySQL. Puede usarlos para copiar una tabla a otra tabla, copiar una tabla de una base de datos a otra, copiar la estructura de la tabla, copiar la tabla con datos, copiar la estructura de la tabla con índice o copiar la tabla de un servidor a otro.

Cómo copiar una tabla en MySQL

Aquí se explica cómo copiar una tabla en MySQL. Hay diferentes casos de uso para copiar tablas en MySQL. Veremos cada uno de ellos en detalle.

MySQL Copiar datos de una tabla a una tabla nueva

Por lo general, debe copiar la tabla en MySQL a una nueva tabla. En este caso, 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;

En la consulta anterior, debe especificar los nombres de la tabla existente junto con las columnas que desea copiar y también el nuevo nombre de la tabla. MySQL llenará su nueva tabla con el resultado de su instrucción SELECT.

Supongamos que tiene una tabla existente product_list

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

Aquí está la consulta SQL para copiar product_list tabla en una nueva tabla llamada new_product_list

mysql> create table new_product_list
       select *
       from product_list;

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

Tenga 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 la cláusula IF NOT EXIST en la instrucción CREATE TABLE, como se muestra a continuación.

mysql> create table if not exist new_product_list
       select *
       from product_list;

Lectura adicional:Cómo agregar la restricción NOT NULL en MySQL

Si desea copiar solo datos parciales de una tabla a la nueva tabla, es decir, algunas filas pero no todas, 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 product_list tabla en una nueva tabla llamada nuevos_productos2

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

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

Lectura adicional:Cómo agregar restricciones predeterminadas en MySQL

MySQL Copiar estructura de tabla a nueva tabla

Las consultas SQL 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 declaració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 (id)

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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

Como puede ver, la tabla new_orders también tiene un campo de clave principal id. La declaración anterior solo copiará la estructura de la tabla pero no los datos. Debe copiar los datos por separado, como se muestra en la siguiente sección.

Lectura adicional:MySQL seleccione las N filas principales por grupo

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, pero será una tabla vacía. 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:base de datos de copia de MySQL

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 mientras usa las consultas SQL anteriores, 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 instrucción SQL anterior duplicará la estructura de la tabla en MySQL desde la base de datos fuente (por ejemplo, source_db ) a otro (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 copiar tablas en MySQL. Tenga cuidado cuando copie 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!