¿Crear tabla en MySQL que coincida con otra tabla?

84

Estoy usando MySQL. Tengo una tabla llamada EMP, y ahora necesito crear una tabla más (EMP_TWO) con el mismo esquema, las mismas columnas y las mismas restricciones. ¿Cómo puedo hacer esto?

usuario1016403
fuente
1
¿Ha intentado exportar la estructura con algo como phpMyAdmin y luego simplemente cambiando el nombre de la tabla?
jprofitt

Respuestas:

176

Para crear una nueva tabla basada en otra estructura de tablas / restricciones, use:

CREATE TABLE new_table LIKE old_table;     

Para copiar los datos, si es necesario, utilice

INSERT INTO new_table SELECT * FROM old_table;  

Crear documentos de tabla

Tenga cuidado con las notas sobre la opción LIKE:

Utilice LIKE para crear una tabla vacía basada en la definición de otra tabla, incluidos los atributos de columna y los índices definidos en la tabla original:

CREAR TABLA new_table LIKE original_table; La copia se crea utilizando la misma versión del formato de almacenamiento de la tabla que la tabla original. Se requiere el privilegio SELECT en la tabla original.

LIKE funciona solo para tablas base, no para vistas.

CREATE TABLE ... LIKE no conserva ninguna opción de tabla DATA DIRECTORY o INDEX DIRECTORY que se especificaron para la tabla original, ni ninguna definición de clave externa.

Casa del pastor
fuente
6
+1 He estado usando MySQL durante años y no sabía por completo que podría usarlo LIKEen una CREATEdeclaración.
jprofitt
@jprofitt Solo lo sé porque quería hacer esto para probar algo en un servidor de producción (consulta importante) el otro día -> ¡muy útil!
Manse
@ManseUK ¿y si quiero copiar una tabla de una base de datos y volver a crearla en otra base de datos?
Yaje
¡Esto es genial! Gracias ... ¡Muy útil por cierto!
Hassantm
En caso de que alguien necesite la misma estructura de tabla en otra base de datos, todo lo que necesita hacer es CREATE TABLE new_db.new_table LIKE old_db.old_table:)
Jimmy Adaro
13

Si desea copiar solo la estructura, utilice

create table new_tbl like old_tbl;

Si desea copiar la estructura y los datos, utilice

create table new_tbl select * from old_tbl;
Karan
fuente
5

¿Crear tabla en MySQL que coincida con otra tabla? Respuesta:

CREATE TABLE new_table AS SELECT * FROM old_table;
lipak
fuente
4

¿Por qué no vas así?

CREATE TABLE new_table LIKE Select * from Old_Table;   

o puedes filtrar datos como este

CREATE TABLE new_table LIKE Select column1, column2, column3 from Old_Table where column1 = Value1;   

Para tener la misma restricción en su nueva tabla, primero tendrá que crear un esquema, luego debe buscar datos para la creación del esquema

CREATE TABLE new_table LIKE Some_other_Table;
Trikaldarshiii
fuente
1
¿Es posible usar ambos likey select *en una declaración? estoy recibiendo un error. También verifique esta respuesta stackoverflow.com/questions/10147565/create-table-like-a1-as-a2
chanchal118
No estoy seguro de mysql
Trikaldarshiii
Algo similar está disponible para sqlserver que se selecciona * en <NewTableName> desde <OldTableName>;
Trikaldarshiii