La sintaxis de la instrucción Crear tabla como SQL es:
CREATE TABLE table_name [ ( column_name [, ...] ) ] AS select [ * ! ( column_name [, ...] ) ] FROM source_table_name
Reemplace table_name con el nombre de la nueva tabla que se creará. El nombre de la columna es opcional, donde puede especificar varias columnas al incluir sus nombres en una lista delimitada por comas. De lo contrario, la estructura de la nueva tabla se basará en los nombres de las columnas, los tipos y la cantidad de columnas devueltas por la instrucción Select, junto con los datos de las filas. Si especifica el nombre de la columna, tenga en cuenta que debe haber el mismo número de columnas especificadas que devuelve select.
La instrucción select al final del comando create table as debe ser válida y tiene el número de objetivos seleccionados que coinciden con el número de columnas en la lista de columnas opcional que precede a la cláusula AS. Puede ser una declaración de selección compleja que recupera datos de varias tablas. Si se especifica una lista de columnas opcional entre paréntesis, el asterisco (*) ya no se puede usar en la declaración de selección.
Por ejemplo,
CREATE TABLE demo_backup AS SELECT * FROM demo;
La instrucción SQL anterior creará una tabla de respaldo de réplica exacta llamada demo_backup con datos y estructura (columnas) de la tabla de demostración.
El posible error si especifica la lista de columnas opcional es:
ERROR:CREATE TABLE/AS SELECT tiene un recuento de columnas no coincidente
Si encuentra este mensaje de error, esto se debe a que la lista opcional de columnas entre paréntesis contiene un número de filas diferente al que devuelve la declaración de selección. Vuelva a verificar si el número de columnas especificado es el mismo con los resultados que se esperan del conjunto de resultados seleccionado.
NotaAlgunos sistemas de bases de datos admiten la sintaxis CREATE TABLE... LIKE, que crea una tabla vacía en función de la definición de otra tabla, incluidos los atributos de columna y los índices definidos en la tabla original. La diferencia es que la sintaxis CREATE TABLE… SELECT también copia los datos.