Bases de Datos

Copiar y crear una tabla MySQL con una consulta SELECT

En algunas ocasiones necesitamos crear una tabla a partir de otra. Lo ideal es crear una tabla a partir de consulta. Como en este caso estamos en MySql realizaremos una consulta para crear tabla mysql.

 

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;

Hasta aqui llegamos con este articulo Copiar y crear una tabla MySQL con una consulta

Click to comment

You must be logged in to post a comment Login

Leave a Reply

Most Popular

To Top