CREATE TABLE-Anweisung (create_table_statement)
Eine CREATE TABLE-Anweisung (
create_table_statement ) definiert eine Basistabelle (siehe Tabelle).Syntax
<create_table_statement> ::=
CREATE TABLE <table_name> (<column_definition>[,<table_description_element>,...])
[IGNORE ROLLBACK] [<sample_definition>]
| CREATE TABLE <table_name> [(<table_description_element>,...)]
[IGNORE ROLLBACK] [<sample_definition>] AS <query_expression> [<duplicates_clause> ]
| CREATE TABLE <table_name> LIKE <table_name> [IGNORE ROLLBACK]
<table_description_element> ::= <column_definition> | <constraint_definition> | <referential_constraint_definition> | <key_definition> | <unique_definition>
table_name, sample_definition, query_expression, duplicates_clause, column_definition, constraint_definition, referential_constraint_definition, key_definition, unique_definition
SQL-Anweisung, um eine Tabelle
person anzulegen:CREATE TABLE person (knr FIXED(4), vorname CHAR(7), nachname CHAR(7), konto FIXED(7,2))
Diese CREATE TABLE-Anweisung besteht aus den Schlüsselwörtern CREATE TABLE, gefolgt vom Tabellennamen, und (in Klammern) einer Liste von Spaltenbezeichnern, die durch Komma voneinander getrennt sind. Weitere optionale Festlegungen sind möglich (Zuordnung eines Primärschlüssels, Festlegung referentieller Integritätsbedingungen).
Erläuterung
Die Ausführung einer CREATE TABLE-Anweisung führt zur Ablage von Daten im Katalog, die die Tabelle (genannt Basistabelle) beschreiben. Diese Daten heißen Metadaten.
Eine CREATE TABLE-Anweisung darf maximal 1024 Spaltendefinitionen enthalten. Wird eine Tabelle ohne Schlüssel definiert, legt das Datenbanksystem implizit eine Schlüsselspalte an. In diesem Fall können noch zusätzlich maximal 1023 Spalten definiert werden.
Eine CREATE TABLE-Anweisung darf höchstens eine Schlüsseldefinition (
key_definition ) enthalten.Der Tabellenname (
table_name ) darf nicht mit dem Namen einer bereits existierenden Tabelle des aktuellen Benutzers übereinstimmen.Der aktuelle Benutzer wird zum
Eigentümer ( owner ) der erzeugten Tabelle. Er erhält das INSERT-, UPDATE-, DELETE- und SELECT-Privileg für diese Tabelle. Wenn es sich nicht um eine temporäre Tabelle handelt, erhält der Eigentümer zusätzlich das INDEX-, REFERENCES- und ALTER-Privileg.Eigentümer einer Tabelle
QUERY-Ausdruck
LIKE <table_name>
Die Angabe von
LIKE <table_name> bewirkt das Anlegen einer leeren Basistabelle, die die gleiche Struktur wie diese Tabelle aus Sicht des aktuellen Benutzers besitzt, d.h. sie besitzt alle Spalten mit den gleichen Spaltennamen und -definitionen wie diese Tabelle, die dem Benutzer bekannt sind. Diese Sicht muß nicht mit der tatsächlichen Struktur der angegebenen Tabelle übereinstimmen, da dem Benutzer durch eingeschränkte Privilegierung nicht alle Spalten bekannt sein müssen.Die angegebene
Tabelle muß eine Basistabelle, eine View-Tabelle oder ein Synonym bezeichnen. Der Benutzer muß mindestens ein Privileg für diese Tabelle besitzen.Der aktuelle Benutzer ist der Eigentümer der Basistabelle.
Wenn alle Schlüsselspalten der nach LIKE angegebenen Tabelle in der Basistabelle enthalten sind, bilden diese die Schlüsselspalten dieser Tabelle. Ist dies nicht der Fall, wird vom Datenbanksystem implizit eine Schlüsselspalte SYSKEY CHAR(8) BYTE angelegt, die den Schlüssel der Basistabelle bildet.
DEFAULT-Spezifikationen der Spalten oder CONSTRAINT-Definitionen für Spalten, die in die Basistabelle übernommen werden, gelten auch für die neu erzeugte Basistabelle.IGNORE ROLLBACK
Die Angabe von IGNORE ROLLBACK ist optional und nur für temporäre Tabellen zulässig. Eine temporäre Tabelle mit diesem Merkmal unterliegt nicht dem Transaktionsmechanismus, d.h. durch Zurücksetzen einer Transaktion werden die diese Tabelle betreffenden Änderungen nicht rückgängig gemacht.
SQL-Anweisungen, um Tabelleneigenschaften zu verändern
Hinzufügen, Löschen von Spalten, Verändern von Datentypen, Verändern der CONSTRAINT-Definition
ALTER TABLE-AnweisungUmbenennen von Spalten
RENAME COLUMN-AnweisungUmbenennen der Tabelle
RENAME TABLE-Anweisung