Copie estructuras de tablas sin copiar datos en MySQL

Mehvish Ashiq 20 junio 2023
  1. Copie estructuras de tablas sin copiar datos en MySQL
  2. Use CREATE TABLE ... LIKE para copiar la estructura de la tabla en MySQL
Copie estructuras de tablas sin copiar datos en MySQL

Hoy veremos cómo copiar estructuras de tablas sin copiar datos en MySQL. Usaremos la declaración CREATE TABLE ... LIKE para copiar solo la estructura de la tabla.

Copie estructuras de tablas sin copiar datos en MySQL

Para aprender en detalle, vamos a crear una tabla llamada usuarios que reside en la base de datos prueba y tiene un ID, NOMBRE DE USUARIO y CORREO ELECTRÓNICO como sus atributos.

Crear una tabla (tabla de usuarios):

#create a table named 'users' in the 'test' database
CREATE TABLE `test`.`users` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `USERNAME` VARCHAR(45) NOT NULL,
  `EMAIL` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`ID`));

A continuación, insertamos un registro para diferenciar que solo se copia la estructura de la tabla en tablas nuevas, no los datos.

INSERT INTO `test`.`users` (USERNAME, EMAIL) VALUES ('mehvish', 'delfstack@example.com');

Use CREATE TABLE ... LIKE para copiar la estructura de la tabla en MySQL

Podemos copiar la estructura de la tabla, también llamada definición de tabla, ejecutando la declaración CREATE TABLE ... LIKE, que se proporciona a continuación.

# Syntax: CREATE TABLE new_table LIKE original_table;
CREATE TABLE new_user_one LIKE test.users;

La consulta anterior hará que la estructura de la tabla nuevo_usuario_uno sea exactamente igual a la de la tabla usuarios.

Copiará todos los nombres de columna, tipos de datos, valores predeterminados y todo excepto el contenido de la tabla. No copiará los datos de la tabla.

Podemos volver a verificar los nombres de columna de la nueva tabla, su tipo de datos, etc., utilizando la siguiente consulta.

SHOW CREATE TABLE test.new_user_one;

Si tienes alguna situación para tener los datos, puedes hacerlo de dos formas. Copie los datos mientras copia la estructura de la tabla o insértelos después de copiar; ambos se dan a continuación.

Copie los datos después de copiar la estructura de la tabla:

# Syntax: INSERT INTO new_table SELECT * FROM original_table;
INSERT INTO new_user_one SELECT * FROM test.users;

Copie datos mientras copia la estructura de la tabla:

# Syntax: CREATE TABLE new_table AS SELECT * FROM original_table;
CREATE TABLE new_user_two AS SELECT * FROM test.users;

En una segunda forma, podemos copiar o clonar el contenido de la tabla ejecutando la sentencia CREATE TABLE ... AS SELECT. La copia de datos puede llevar tiempo en caso de tener tablas grandes.

Recuerde, la nueva tabla (nuevo_usuario_dos aquí) solo copiará las definiciones de columna básicas, los valores predeterminados y la configuración nula. Nunca hereda las definiciones de AUTO_INCREMENT e INDEXES.

Puede confirmar utilizando la siguiente consulta.

SHOW CREATE TABLE test.new_user_two;
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Artículo relacionado - MySQL Table