sql >> Database >  >> RDS >> Mysql

Dupliceer, kopieer of maak een back-up van tabellen in MySQL, MariaDB, Oracle, PostgreSQL, DB2 en SQLite met Create Table As SQL

In Oracle, PostgreSQL, DB2, MySQL, MariaDB en SQLite databasesysteem is er een leuke opdrachtfunctie genaamd Create Table As waarmee u eenvoudig een tabel kunt dupliceren met gegevens uit een andere of enkele andere tabellen. De SQL-opdracht kan ook worden gebruikt om een ​​tabel exact te 'kopiëren en plakken' of om een ​​back-up van tabelgegevens te maken voordat een gegevensmanipulatiequery op de originele tabel wordt uitgevoerd, voor het geval het script een fout bevat en de back-updatum kan worden gebruikt om de oorspronkelijke staat te herstellen . Tabel maken als zal een nieuwe tabel maken die is opgebouwd uit de inhoud van de dataset of resultatenset die is opgehaald door een Select SQL-query uit een tabel die al in de database bestaat.

De syntaxis van Create Table As SQL-instructie is:

CREATE TABLE table_name [ ( column_name [, ...] ) ]
             AS select [ * ! ( column_name [, ...] ) ] FROM source_table_name

Vervang table_name door de naam van de nieuwe tabel die wordt gemaakt. Kolomnaam is optioneel, waarbij u meerdere kolommen kunt specificeren door hun namen op te nemen in een door komma's gescheiden lijst. Anders wordt de structuur van de nieuwe tabel gebaseerd op de kolomnamen, typen en het aantal kolommen dat wordt geretourneerd door de Select-instructie, samen met de rijgegevens. Als u de kolomnaam opgeeft, moet u er rekening mee houden dat er hetzelfde aantal kolommen moet worden opgegeven als wordt geretourneerd door selecteren.

De select-instructie aan het einde van de create table as-opdracht moet geldig zijn en het aantal geselecteerde doelen moet overeenkomen met het aantal kolommen in de optionele kolomlijst voorafgaand aan de AS-component. Het kan een complexe select-instructie zijn die gegevens uit meerdere tabellen haalt. Als een optionele kolomlijst tussen haakjes is opgegeven, kan asterisk (*) niet langer worden gebruikt in de select-instructie.

Bijvoorbeeld,

CREATE TABLE demo_backup
AS SELECT * FROM demo;

Bovenstaande SQL-instructie maakt een exacte replica-back-uptabel met de naam demo_backup met gegevens en structuur (kolommen) van de demotabel.

Mogelijke fout als u de optionele kolomlijst specificeert is:

FOUT:CREATE TABLE/AS SELECT heeft niet-overeenkomende kolomtelling

Als u dit foutbericht tegenkomt, komt dit doordat de optionele lijst met kolommen tussen haakjes een ander aantal rijen bevat dan de select-instructie die wordt geretourneerd. Controleer nogmaals of het aantal gespecificeerde kolommen hetzelfde is met de resultaten die worden verwacht van de geselecteerde resultatenset.

OpmerkingSommige databasesystemen ondersteunen CREATE TABLE … LIKE-syntaxis waarmee een lege tabel wordt gemaakt op basis van de definitie van een andere tabel, inclusief alle kolomattributen en indexen die in de oorspronkelijke tabel zijn gedefinieerd. Het verschil is dat CREATE TABLE ... SELECT syntaxis ook de gegevens kopieert.


  1. OF Operator Kortsluiting in SQL Server

  2. Selecteer (haal) alle records van meerdere schema's op met Postgres

  3. Hoe installeer ik libpq-fe.h?

  4. Opmerkingen en vind-ik-leuks implementeren in de database