IBM PureData System for Analytics, Version 7.1

CREATE TABLE

Mit dem CREATE TABLE-Befehl können Sie eine neue, anfänglich leere Tabelle in der aktuellen Datenbank erstellen. Der CREATE TABLE-Befehl erstellt automatisch einen Datentyp, der den Tupeltyp (Strukturtyp) darstellt, der einer einzelnen Zeile der Tabelle entspricht.

Eine Tabelle kann Folgendes nicht haben:
  • Denselben Namen wie ein vorhandener Datentyp.
  • Denselben Namen wie eine Systemkatalogtabelle.
  • Mehr als 1600 Spalten. Das effektive Limit ist aufgrund von Beschränkungen bei der Tupellänge ein wenig niedriger.
  • Tabellen- oder Ansichtsattribute mit den folgenden Namen:
    • cmax
    • cmin
    • createxid
    • ctid
    • datasliceid
    • deletexid
    • oid
    • rowid
    • tableoid
    • xmax
    • xmin

Die optionalen Integritätsbedingungsklauseln geben Integritätsbedingungen (oder Tests) an, die neue oder aktualisierte Zeilen erfüllen müssen, damit eine Einfüge- oder Aktualisierungsoperation erfolgreich ausgeführt wird. Eine Integritätsbedingung ist eine benannte Regel, d. h. ein SQL-Objekt, das die Definition gültiger Wertesets unterstützt, indem die Ergebnisse von Einfüge-, Aktualisierungs- oder Löschoperationen, die für eine Tabelle verwendet werden, begrenzt werden. Netezza unterstützt Integritätsbedingungsprüfungen nicht; wenn Sie Integritätsbedingungen angeben, müssen Sie selbst die Überprüfung der Integritätsbedingungen und der referenziellen Integrität ausführen.)

Sie können Tabellen- und Spaltenintegritätsbedingungen definieren.
  • Eine Spaltenintegritätsbedingung wird als Teil einer Spaltendefinition definiert.
  • Eine Tabellenintegritätsbedingung ist nicht an eine bestimmte Spalte gebunden und sie kann mehr als eine Spalte umfassen.

Sie können jede Spaltenintegritätsbedingung auch als Tabellenintegritätsbedingung schreiben. Eine Spaltenintegritätsbedingung ist lediglich eine zweckmäßige Art der Notation, wenn die Integritätsbedingung nur eine einzige Spalte betrifft.

Verteilungsspezifikation
Jede Tabelle in einer Netezza-RDBMS-Datenbank weist nur einen einzigen Verteilungsschlüssel auf, der aus ein bis vier Spalten besteht. Sie können die folgende SQL-Syntax verwenden, um Verteilungsschlüssel zu erstellen.
  • Die Netezza SQL-Syntax zum Erstellen eines expliziten Verteilungsschlüssels lautet wie folgt:
    CREATE TABLE <Tabellenname> [ ( <Spalte>[,<Spalte>… ] ) ] AS
    <Auswahlklausel> [ DISTRIBUTE ON [HASH] ( <Spalte>[<Spalte>,… ] ) ]

    Die distribute on-Phrase gibt den Verteilungsschlüssel an, das Wort hash ist optional.

  • Die Netezza SQL-Syntax zum Erstellen eines Umlaufverteilungsschlüssels lautet wie folgt:
    CREATE TABLE <Tabellenname> (col1 int, col2 int, col3 int)
    DISTRIBUTE ON RANDOM;

    Die distribute on random-Phrase gibt die Umlaufverteilung an.

  • Die Netezza SQL-Syntax zum Erstellen einer Tabelle ohne Angabe eines Verteilungsschlüssels lautet wie folgt:
    CREATE TABLE <Tabellenname> (col1 int, col2 int, col3 int);

    Das Netezza-System wählt einen Verteilungsschlüssel aus. Es gibt keine Möglichkeit, zu verifizieren, um welchen Schlüssel es sich handelt, und der Schlüssel kann abhängig vom Netezza-Software-Release variieren.

Regelaktion für Integritätsbedingungen
Sie können die folgenden Aktionen beim Aktualisieren oder Löschen einer Integritätsbedingung angeben. Da das System die Überprüfung der Integritätsbedingungen nicht erzwingt, werden diese Regeln nicht verwendet, sondern lediglich akzeptiert.
  • CASCADE aktualisiert den Wert der referenzierenden Spalte in den neuen Wert der referenzierten Spalte.
  • SET NULL legt die referenzierende Spalte auf den neuen Wert der referenzierten Spalte fest.
  • SET DEFAULT legt die referenzierte Spalte fest
  • RESTRICT entspricht NO ACTION
  • NO ACTION produziert einen Fehler, wenn der Fremdschlüssel nicht eingehalten wird.
Attribute für Integritätsbedingungen
Integritätsbedingungen können die folgenden Attribute haben, die festlegen, ob die Integritätsbedingungsprüfung sofort oder verzögert ausgeführt wird. Da das System die Überprüfung der Integritätsbedingungen nicht erzwingt, werden diese Attribute nicht verwendet, sondern lediglich akzeptiert.
  • [NOT] DEFERRABLE legt fest, ob die Integritätsbedingung am Ende der Transaktion geprüft wird.
  • INITIALLY DEFERRED prüft die Integritätsbedingung lediglich am Ende der Transaktion.
  • INITIALLY IMMEDIATE prüft die Integritätsbedingung nach jeder Anweisung.

Syntax

Allgemeine Syntax für den CREATE TABLE-Befehl:
CREATE [ TEMPORARY | TEMP ] TABLE <Tabelle>
( <Spalte> <Typ> [<Spaltenintegritätsbedingung>][,<Spalte> <Typ>
[<Spaltenintegritätsbedingung>]…] [<Tabellenintegritätsbedingung>
[,<Tabellenintegritätsbedingung>… ] )
[ DISTRIBUTE ON { RANDOM | [HASH] (<Spalte>[,<Spalte>…]) } ]
[ ORGANIZE ON { (<Spalte>) | NONE } ]
[ ROW SECURITY ]
Dabei steht <Spaltenintegritätsbedingung> für Folgendes:
[ CONSTRAINT <Integritätsbedingungsname> ] 
{NOT NULL | NULL | UNIQUE | PRIMARY KEY | DEFAULT <Wert> | <Referenz>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
Dabei steht <Tabellenintegritätsbedingung> für Folgendes:
[ CONSTRAINT <Integritätsbedingungsname> ] 
{UNIQUE (<Spalte>[,<Spalte>…] ) |
PRIMARY KEY (<PS-Spaltenname>[,<PS-Spaltenname>…] ) |
FOREIGN KEY (<FS-Spaltenname>[,<FS-Spaltenname>…] ) <Referenz>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
Dabei steht <Referenz> für Folgendes:
REFERENCES <Reftabelle> [ (<Refspaltenname>[,<Refspaltenname>…] ) ]
[ MATCH FULL ]
[ ON UPDATE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]
[ ON DELETE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]

Das System erlaubt und verwaltet Integritätsbedingungen über Primär- und Fremdschlüssel, Standardintegritätsbedingungen, eindeutige Integritätsbedingungen und Integritätsbedingungen in Form von Referenzen. Das IBM® Netezza-System unterstützt weder Integritätsbedingungsprüfungen noch referenzielle Integrität. Der Benutzer muss Integritätsbedingungsprüfungen und referenzielle Integrität sicherstellen.

Eingaben

Der CREATE TABLE-Befehl akzeptiert folgende Eingaben:
Tabelle 1. Eingaben für CREATE TABLE
Eingabe Beschreibung
TEMP[ORARY] Die zu erstellende Tabelle soll eine temporäre Tabelle sein.
<Tabelle> Der Name der zu erstellenden Tabelle.
<Spalte> Der Name einer Spalte, die in der neuen Tabelle erstellt werden soll.
<Typ> Der Datentyp der Spalte.
DISTRIBUTE ON Jede Tabelle in der Datenbank muss einen Verteilungsschlüssel haben, der aus ein bis vier Spalten besteht. Der Standardwert ist RANDOM, der das System veranlasst, einen zufälligen Verteilungsschlüssel auszuwählen.
HASH Dieser Parameter kann zu Erläuterungszwecken angegeben werden, hat jedoch keine Auswirkungen auf den Befehl.
ORGANIZE ON Spalten (von eins bis vier), anhand derer die Tabelle organisiert werden soll. Dies kann für externe Tabellen nicht angegeben werden. Wenn Spalten angegeben werden, kann die Tabelle keine materialisierten Ansichten haben und alle angegebenen Spaltendatentypen müssen in einer Zonenmap dargestellt werden können. Die Tabellendatenumorganisation tritt in Kraft, wenn GROOM TABLE ausgeführt wird. Weitere Informationen finden Sie in IBM Netezza Systemverwaltung im Abschnitt zur Verwendung von Clusterbasistabellen.
ROW SECURITY Tabelle mit Sicherheit auf Zeilenebene erstellen.
<Integritätsbedin-
gungsname>
Der Name, der einer Spaltenintegritätsbedingung oder einer Tabellenintegritätsbedingung gegeben werden soll. Wenn Sie keinen Namen angeben, generiert das System einen.
NOT DEFERRABLE | DEFERRABLE Steuert, ob die Integritätsbedingung bis zum Ende der Transaktion aufgeschoben werden kann. NOT DEFERRABLE ist der Standardwert. (Netezza unterstützt die Überprüfung der Integritätsbedingungen und referenzielle Integrität nicht.)
INITIALLY Gibt DEFERRED (am Ende der Transaktion) oder IMMEDIATE (am Ende jeder Anweisung) an.
NOT NULL | NULL Gibt an, ob die Spalte Nullwerte enthalten darf. NULL ist der Standardwert.
UNIQUE (Spalten- und Tabellenintegritätsbe-
dingung)
Gibt an, ob jeder Wert in der Spalte eindeutig sein muss.
PRIMARY KEY (Spalten- und Tabellen-
integritätsbedingung)
Gibt an, ob die angegebenen Spalten den Primärschlüssel der Tabelle bilden sollen.

Diese Integritätsbedingung ist im Wesentlichen eine Kombination der Integritätsbedingungen UNIQUE und NOT NULL, durch die Angabe von Spalten als Primärschlüssel werden jedoch auch Metadaten zum Design des Schemas bereitgestellt. Ein Primärschlüssel impliziert, dass andere Tabellen diese Spaltengruppe als eindeutige Kennung für Zeilen verwenden können.

Sie können nur eine Integritätsbedingung über Primärschlüssel für eine Tabelle angeben, entweder als Spalteneinschränkung oder als Tabelleneinschränkung.

Die Spaltengruppe, aus der der Primärschlüssel besteht, muss sich von der Spaltengruppe unterscheiden, die von anderen eindeutigen Integritätsbedingungen für die Tabelle definiert werden.

DEFAULT
(Spaltenintegritäts-
bedingung)
Der Standardwert, der in jede Zeile dieser Spalte gestellt werden soll.
REFERENCES
(Spaltenintegritäts-
bedingung)
Die angegebenen Spalten der neuen Tabellen dürfen nur Werte enthalten, die den Werten in den angegebenen Spalten der angegebenen Tabelle entsprechen.
FOREIGN KEY und REFERENCES table
(Tabellenintegritäts-
bedingung)
Die angegebenen Spalten der neuen Tabellen dürfen nur Werte enthalten, die den Werten in den angegebenen Spalten der angegebenen Tabelle entsprechen. Wenn Sie keine Spalte angeben, muss der Wert mit dem Primärschlüssel der Tabelle übereinstimmen. Die angegebenen Spalten der referenzierten Tabelle müssen in dieser Tabelle über eine eindeutige Integritätsbedingung oder eine Integritätsbedingung über Primärschlüssel verfügen.
MATCH FULL MATCH FULL verhindert, dass eine Spalte eines mehrspaltigen Fremdschlüssels null ist, wenn andere Teile des Fremdschlüssels nicht null sind. Dies ist der Standardwert. MATCH PARTIAL wird nicht unterstützt.
ON UPDATE | ON DELETE Die Aktion, die ausgeführt werden soll, wenn die angegebene Tabelle oder die angegebenen Spalten aktualisiert oder gelöscht werden:
NO ACTION
Setzt einen Fehler ab, wenn der Fremdschlüssel verletzt wird. Dies ist der Standardwert.
RESTRICT
Entspricht NO ACTION.
CASCADE
Löscht alle Zeilen, die die gelöschte Zeilen referenzieren.
SET NULL
Setzt die Werte der referenzierenden Spalten auf die Standardwerte.
SET DEFAULT
Setzt die Werte der referenzierenden Spalten auf die Standardwerte.

Ausgaben

Der Befehl hat die folgenden Ausgaben:

Tabelle 2. Ausgaben von CREATE TABLE
Ausgabe Beschreibung
CREATE TABLE Das System gibt diese Nachricht zurück, wenn der Befehl erfolgreich beendet wurde.
ERROR Das System gibt diese Nachricht zurück, wenn die Tabellenerstellung fehlschlägt. Die Fehlernachricht enthält beschreibenden Text, z. B. ERROR: Relation 'Tabelle' already exists.

Berechtigungen

Sie müssen der Benutzer mit Administratorberechtigung oder der Eigner der Datenbank oder des Schemas sein oder Ihr Konto muss über die Berechtigung zum Erstellen von Tabellen verfügen.

Verwendung

Es folgen Verwendungsbeispiele:



Feedback | Copyright IBM Corporation 2014 | Letzte Aktualisierung: 2014-02-28