A veces es necesario clonar una tabla o parte de ella para después llenarla con datos provenientes de otra tabla. En MySQL podemos hacerlo de una forma fácil y sencilla. Sólo tenemos que usar los siguientes comandos.

Para crear una tabla con una nueva estructura usamos:

CREATE tablaNueva LIKE tablaAnterior;

Y para llenarla con los datos usamos:

INSERT INTO tablaNueva SELECT * FROM tablaAnterior;

Ejemplo

Vamos a ilustrarlo con un ejemplo. Crearemos una tabla llamada clientes:

CREATE TABLE clientes(
  idCliente VARCHAR(255) NOT NULL,
  nombre VARCHAR(255) NOT NULL,
  direccion VARCHAR(255) NOT NULL
);
Crear tabla principal

Crear tabla principalDespués vamos a ingresar unos datos:

Insertar datos de clientes

Comprobamos que se ingresaron correctamente:

Consultar tabla

Ahora vamos a clonar la tabla:

Crear tabla idéntica

Mostramos la estructura de ambas tablas para ver que son iguales:

Mostrar estructura de tablas

Finalmente vamos a copiar los datos:

Copiar datos de una tabla a otra

Y consultamos para ver que se copiaron con éxito:

Datos copiados

Así es como podemos copiar o clonar tablas y estructuras de tablas en MySQL.

Cabe destacar que también podemos copiar datos de una tabla a otra aunque no tengan el mismo número de columnas, así:

INSERT INTO nuevaTabla (columna1, columna2) (SELECT columna2, columna3 FROM tablaAnterior);

En ese caso, nuevaTabla sólo tiene 2 columnas, y aunque tablaAnterior tenga más de 2 de ellas no importa, ya que sólo estamos insertando lo de la columna 2 y 3.

Si fuera al revés (que la nueva tuviera más columnas que la segunda) usaríamos lo siguiente:

INSERT INTO nuevaTabla (columna1, columna2, columna3) (SELECT columna1, "DATO POR DEFECTO", "OTRO DATO POR DEFECTO" FROM tablaAnterior);

En ese caso, nuevaTabla tiene 3 columnas pero tablaAnterior tiene sólo 1. Entonces la llenamos usando datos por defecto para satisfacer las 3 columnas de la nueva tabla.

Espero que este tutorial haya servido.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto