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

Erstellen Sie eine neue Tabelle, indem Sie Daten aus anderen Tabellen mit CREATE TABLE AS auswählen

Durch die Verwendung der SQL-Datenmanipulationsanweisung kann eine neue, temporäre, Sicherungs- oder reguläre Tabelle erstellt und mit Daten aus einer anderen Tabelle oder Tabellen, die durch die SELECT-Anweisung abgerufen wurden, gefüllt oder eingefügt werden. Die SQL-Datenmanipulationssprache ist CREATE TABLE AS, die verwendet werden kann, um eine neue Tabelle zu erstellen, die aus Inhalten einer Ergebnismenge durch eine Abfrage einer bereits in der Datenbank vorhandenen Tabelle erstellt wird. Sowohl die Spaltentypen als auch die Zeilendaten für die neue Tabelle stammen aus dem durch select.

angegebenen SELECT-Befehl

CREATE TABLE AS hat die folgende Syntax oder Zusammenfassung in einfacher Form:

CREATE TABLE new_table_name [ ( column [, ...] ) ] AS SELECT [ ( column [, ...] ) ] FROM existing table_name

Die SELECT-Anweisung kann in komplexer Form vorliegen, wenn Daten aus mehreren Tabellen abgerufen werden. Für die neue Tabelle können Spaltennamen angegeben werden, indem die Spaltennamen in eine durch Kommas getrennte Liste aufgenommen werden. Ein sehr wichtiger Punkt, den Sie beachten sollten, ist, dass in der Spaltenliste vor der AS-Klausel (optional, falls angegeben) für die neue Tabelle dieselbe Anzahl von Spalten angegeben werden sollte wie die Anzahl der Zielspalten, die von der Select-Anweisung zurückgegeben werden. Wenn die optionale Liste der Spalten in Klammern der neuen Tabelle eine andere Anzahl von Zeilen enthält als die Zeilen, die die SELECT-Anweisung zurückgibt, wird die folgende Fehlermeldung angezeigt:

FEHLER:CREATE TABLE/AS SELECT weist eine nicht übereinstimmende Spaltenanzahl auf

In seiner einfachsten Form erstellt die CREATE TABLE AS-Anweisung eine vollständige Sicherung einer vorhandenen Tabelle, einschließlich aller Spalten und Daten, indem einfach die Anweisung verwendet wird:

CREATE TABLE new_table_name AS SELECT * FROM existing_table_name