Die Syntax der Anweisung „Tabelle als SQL erstellen“ lautet:
CREATE TABLE table_name [ ( column_name [, ...] ) ] AS select [ * ! ( column_name [, ...] ) ] FROM source_table_name
Ersetzen Sie Tabellenname durch den Namen der neu zu erstellenden Tabelle. Der Spaltenname ist optional, wobei Sie mehrere Spalten angeben können, indem Sie ihre Namen in eine durch Kommas getrennte Liste aufnehmen. Andernfalls basiert die Struktur der neuen Tabelle auf den Spaltennamen, Typen und der Anzahl der Spalten, die von der Select-Anweisung zusammen mit den Zeilendaten zurückgegeben werden. Wenn Sie den Spaltennamen angeben, beachten Sie, dass dieselbe Anzahl von Spalten angegeben werden sollte, die von select.
zurückgegeben werdenDie select-Anweisung am Ende des Befehls create table as muss gültig sein und die Anzahl der ausgewählten Ziele muss mit der Anzahl der Spalten in der optionalen Spaltenliste vor der AS-Klausel übereinstimmen. Es kann sich um eine komplexe select-Anweisung handeln, die Daten aus mehreren Tabellen abruft. Wenn die optionale Spaltenliste in Klammern angegeben ist, kann das Sternchen (*) nicht mehr in der Select-Anweisung verwendet werden.
Zum Beispiel
CREATE TABLE demo_backup AS SELECT * FROM demo;
Die obige SQL-Anweisung erstellt eine exakte Replikat-Sicherungstabelle mit dem Namen demo_backup mit Daten und Struktur (Spalten) der Demo-Tabelle.
Möglicher Fehler bei Angabe der optionalen Spaltenliste ist:
FEHLER:CREATE TABLE/AS SELECT weist eine nicht übereinstimmende Spaltenanzahl auf
Wenn Sie auf diese Fehlermeldung stoßen, liegt dies daran, dass die optionale Liste der Spalten in Klammern eine andere Anzahl von Zeilen enthält, als die SELECT-Anweisung zurückgibt. Überprüfen Sie noch einmal, ob die Anzahl der angegebenen Spalten mit den Ergebnissen übereinstimmt, die von der ausgewählten Ergebnismenge erwartet werden.
AnmerkungEinige Datenbanksysteme unterstützen die CREATE TABLE … LIKE-Syntax, die eine leere Tabelle basierend auf der Definition einer anderen Tabelle erstellt, einschließlich aller Spaltenattribute und Indizes, die in der ursprünglichen Tabelle definiert sind. Der Unterschied besteht darin, dass die CREATE TABLE … SELECT-Syntax auch die Daten kopiert.