sql >> Base de Datos >  >> RDS >> Mysql

Duplique, copie o respalde tablas en MySQL, MariaDB, Oracle, PostgreSQL, DB2 y SQLite con Create Table As SQL

En el sistema de base de datos Oracle, PostgreSQL, DB2, MySQL, MariaDB y SQLite, hay una buena función de comando llamada Crear tabla como lo que permite una fácil duplicación de una tabla con datos de otra o algunas otras tablas. El comando SQL también se puede usar para 'copiar y pegar' una tabla exactamente o hacer una copia de seguridad de los datos de una tabla antes de realizar una consulta de manipulación de datos en la tabla original, en caso de que el script tenga un error y la fecha de la copia de seguridad se pueda usar para restaurar al estado original. . Crear tabla como creará una nueva tabla creada a partir del contenido del conjunto de datos o conjunto de resultados recuperado por un Seleccionar Consulta SQL de una tabla que ya existe dentro de la base de datos.

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.