Hay varias formas diferentes de copiar una tabla 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;
Fuente:
http://juanpalomez.wordpress.com/2009/10/28/copiar-tablas-crear-tablas-con-una-select-copy-tables/
Alan