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.