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.
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