PostgreSQL Dokumentation 9
Beschreibung
CREATE TABLE als Tabelle erstellt und füllt es mit durch einen SELECT-Befehl berechnete Daten. Die Spalten der Tabelle haben die Namen und Datentypen, die mit den Ausgabespalten der SELECT (außer dass Sie die Spaltennamen außer Kraft setzen kann durch eine explizite Liste von neuen Spaltennamen geben).
CREATE TABLE AS eine gewisse Ähnlichkeit mit der Erstellung einer Ansicht trägt, aber es ist wirklich ganz anders aus: es eine neue Tabelle erstellt und wertet die Abfrage nur einmal die neue Tabelle zunächst zu füllen. Die neue Tabelle wird nicht nachträgliche Änderungen an den Quellentabellen der Abfrage verfolgen. Im Gegensatz dazu eine Ansicht neubewertet seine Definition von SELECT-Anweisung, wenn es abgefragt wird.
Parameter
Ignoriert für Kompatibilität. Die Verwendung dieser Schlüsselwörter ist veraltet; siehe Tabelle für Einzelheiten erstellen.
Wenn angegeben, wird die Tabelle als eine temporäre Tabelle erstellt. Siehe Tabelle für Einzelheiten erstellen.
Wenn angegeben, wird die Tabelle als unlogged Tabelle erstellt. Siehe Tabelle für Einzelheiten erstellen.
Der Name (möglicherweise mit Schemaqualifikation) der Tabelle erstellt werden.
Der Name einer Spalte in der neuen Tabelle. Wenn Spaltennamen nicht zur Verfügung gestellt werden, werden sie von den Ausgangsspaltennamen der Abfrage gemacht.
Diese Klausel gibt optionale Speicherparameter für die neue Tabelle; siehe Speicherparameter für weitere Informationen. Die Klausel WITH kann auch OIDS = TRUE (oder nur OIDS) angeben, dass die Zeilen der neuen Tabelle OID (Object Identifier) zugewiesen sind sollten, oder OIDS = FALSE, um anzugeben, dass die Zeilen nicht OIDs haben sollten. Siehe CREATE TABLE für weitere Informationen.
Dies sind obsolescent Syntaxen äquivalent MIT (OIDS) und mit (OIDS = FALSE). beziehungsweise. (.) Wenn Sie sowohl eine OIDS Einstellung und Speicherparameter geben wollen, müssen Sie die mit Syntax verwenden; siehe oben.
Das Verhalten der temporären Tabellen am Ende eines Transaktionsblock kann unter Verwendung von ON COMMIT gesteuert werden. Die drei Optionen sind:
Keine besondere Aktion an den Enden der Transaktionen gemacht. Dies ist das Standardverhalten.
Alle Zeilen in der temporären Tabelle wird am Ende eines jeden Transaktionsblock gelöscht werden. Im Wesentlichen wird eine automatische TRUNCATE an jedem getan begehen.
Die temporäre Tabelle wird am Ende des aktuellen Transaktionsblock fallen gelassen werden.
Die tablespace_name ist der Name des Tabellen, in dem die neue Tabelle erstellt werden soll. Wenn nicht angegeben, wird default_tablespace konsultiert oder temp_tablespaces, wenn die Tabelle nur vorübergehend ist.
Diese Klausel gibt an, ob die von der Abfrage erzeugten Daten sollen in die neue Tabelle kopiert werden. Falls nicht, wird nur die Tabellenstruktur kopiert. Die Standardeinstellung ist, die Daten zu kopieren.
Dieser Befehl ist funktionell ähnlich INTO auszuwählen. aber es wird bevorzugt, da es weniger wahrscheinlich ist, mit anderen Verwendungen der SELECT INTO-Syntax zu verwechseln. Darüber hinaus CREATE TABLE AS einen Ober der von SELECT INTO angebotenen Funktionalität bietet.
Vor PostgreSQL 8.0, CREATE TABLE AS immer enthalten OIDs in der Tabelle es erstellt. Ab PostgreSQL 8.0 ermöglicht die CREATE TABLE AS Befehl, um den Benutzer explizit angeben, ob OIDs enthalten sein sollte. Wenn das Vorhandensein von OIDs nicht explizit angegeben, wird die default_with_oids Konfigurationsvariable verwendet. Ab PostgreSQL 8.1 ist diese Variable standardmäßig falsch, so ist das Standardverhalten vorab 8.0 Versionen nicht identisch. Anwendungen, die OIDs in der Tabelle mit CREATE TABLE erstellt erfordern AS explizit (OIDS), um gewünschte Verhalten sicherzustellen angeben sollten.
Erstellen Sie eine neue Tabelle films_recent bestehend aus nur den letzten Einträge aus der Tabelle Filme:
Um eine Tabelle vollständig zu kopieren, die Kurzform des TABLE-Befehl kann auch verwendet werden:
Erstellen Sie eine neue temporäre Tabelle films_recent. bestehend aus nur den letzten Einträgen aus der Tabelle Filmen. unter Verwendung einer vorbereiteten Aussage. Die neue Tabelle hat OIDs und wird bei begehen fallen gelassen werden:
Kompatibilität
CREATE TABLE AS mit dem SQL-Standard entspricht. Die folgenden sind Nicht-Standard-Erweiterungen:
Der Standard verlangt Klammern um die Unterabfrage Klausel; in PostgreSQL. Diese Klammern sind optional.
Im Standard wird die MIT [NO] DATA-Klausel erforderlich; in PostgreSQL ist es optional.
PostgreSQL behandelt temporäre Tabellen in einer Art und Weise ziemlich verschieden von der Norm; siehe CREATE TABLE für weitere Einzelheiten.
Die WITH-Klausel ist eine PostgreSQL-Erweiterung; weder Speicherparameter noch OIDs sind in der Norm.
Das PostgreSQL-Konzept von Tablespaces ist nicht Bestandteil des Standard. Daher ist die Klausel TABLE eine Erweiterung.