Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Duplizieren, kopieren oder sichern Sie Tabellen in MySQL, MariaDB, Oracle, PostgreSQL, DB2 und SQLite mit Create Table As SQL

In Oracle-, PostgreSQL-, DB2-, MySQL-, MariaDB- und SQLite-Datenbanksystemen gibt es eine nette Befehlsfunktion namens Create Table As Dies ermöglicht das einfache Duplizieren einer Tabelle mit Daten aus einer anderen oder einigen anderen Tabellen. Der SQL-Befehl kann auch verwendet werden, um eine Tabelle genau zu kopieren und einzufügen oder Tabellendaten zu sichern, bevor eine Datenmanipulationsabfrage für die ursprüngliche Tabelle durchgeführt wird, nur für den Fall, dass das Skript einen Fehler aufweist und das Sicherungsdatum verwendet werden kann, um den ursprünglichen Zustand wiederherzustellen . Tabelle erstellen als erstellt eine neue Tabelle, die aus dem Inhalt des Datensatzes oder Ergebnissatzes erstellt wird, der durch ein Select abgerufen wird SQL-Abfrage aus einer Tabelle, die bereits in der Datenbank vorhanden ist.

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 werden

Die 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.