MySQL

Copiar y crear una tabla MySQL con una SELECT

 

MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual GPL/Licencia comercial por Oracle Corporation y está considerada como la base datos open source más popular del mundo, y una de las más populares en general junto a Oracle y Microsoft SQL Server, sobre todo para entornos de desarrollo web.

MySQL fue inicialmente desarrollado por MySQL AB (empresa fundada por David Axmark, Allan Larsson y Michael Widenius). MySQL A.B. fue adquirida por Sun Microsystems en 2008, y ésta a su vez fue comprada por Oracle Corporation en 2010, la cual ya era dueña desde 2005 de Innobase Oy, empresa finlandesa desarrolladora del motor InnoDB para MySQL.

Hay varias formas diferentes de copiar una tabla MySQL rápidamente, en una sola consulta SQL. Evitan tener que hacer un CREATE TABLE especificando todos los nombres y tipos de datos de los campos. No obstante sólo copian los campos, no los índices ni las constraints. Esta es una comparativa de ellas y los SGBD en los que funciona cada una:
Consulta    Mysql    Postgres    Oracle    Access    Copia estructura    Copia datos
CREATE TABLE destino AS SELECT * FROM origen    Si    Si    Si    No    Si    Si
CREATE TABLE destino LIKE origen    Si**    Si    No    No    Si    No
INSERT INTO destino SELECT * FROM origen    Si    Si    Si    Si    No    Si
SELECT * INTO destino FROM origen    No    Si*    No    Si    Si    Si

* La documentación de Postgres recomienda usar CREATE TABLE AS mejor que SELECT INTO

** En MySQL esta instrucción copia todas las características de la tabla origen, incluidos los índices, comentarios, … Por lo tanto para hacer una copia idéntica lo mejor es CREATE TABLE destino LIKE origen + INSERT INTO destino SELECT * FROM origen

Esto también puede servir para copiar tablas entre distintos esquemas. Por ejemplo en MySQL:

CREATE TABLE esquema2.tabla AS SELECT * FROM esquema1.tabla;

Dejá un comentario

Tu dirección de correo electrónico no será publicada.