Copie estructuras de tablas sin copiar datos en MySQL
- Copie estructuras de tablas sin copiar datos en MySQL
-
Use
CREATE TABLE ... LIKE
para copiar la estructura de la tabla 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;