CREATE TABLE
Erstellen einer neuen Tabelle (Relation)
DSQL, ESQL
CREATE [GLOBAL TEMPORARY] TABLE tablename [EXTERNAL [FILE] 'filespec'] (<col_def> [, {<col_def> | <tconstraint>} ...]) [{<table_attrs> | <gtt_table_attrs>}] <col_def> ::= <regular_col_def> | <computed_col_def> | <identity_col_def> <regular_col_def> ::= colname {<datatype> | domainname} [DEFAULT {<literal> | NULL | <context_var>}] [<col_constraint> ...] [COLLATE collation_name] <computed_col_def> ::= colname [{<datatype> | domainname}] {COMPUTED [BY] | GENERATED ALWAYS AS} (<expression>) <identity_col_def> ::= colname {<datatype> | domainname} GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY [(<identity_col_option>...)] [<col_constraint> ...] <identity_col_option> ::= START WITH start_value | INCREMENT [BY] inc_value <datatype> ::= <scalar_datatype> | <blob_datatype> | <array_datatype> <scalar_datatype> ::= !! Siehe auch Skalardatentypensyntax !! <blob_datatype> ::= !! Siehe auch BLOB-Datentypensyntax !! <array_datatype> ::= !! Siehe auch Array-Datentypensyntax !! <col_constraint> ::= [CONSTRAINT constr_name] { PRIMARY KEY [<using_index>] | UNIQUE [<using_index>] | REFERENCES other_table [(colname)] [<using_index>] [ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}] [ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}] | CHECK (<check_condition>) | NOT NULL } <tconstraint> ::= [CONSTRAINT constr_name] { PRIMARY KEY (<col_list>) [<using_index>] | UNIQUE (<col_list>) [<using_index>] | FOREIGN KEY (<col_list>) REFERENCES other_table [(<col_list>)] [<using_index>] [ON DELETE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}] [ON UPDATE {NO ACTION | CASCADE | SET DEFAULT | SET NULL}] | CHECK (<check_condition>) } <col_list> ::= colname [, colname ...] <using_index> ::= USING [ASC[ENDING] | DESC[ENDING]] INDEX indexname <check_condition> ::= <val> <operator> <val> | <val> [NOT] BETWEEN <val> AND <val> | <val> [NOT] IN (<val> [, <val> ...] | <select_list>) | <val> IS [NOT] NULL | <val> IS [NOT] DISTINCT FROM <val> | <val> [NOT] CONTAINING <val> | <val> [NOT] STARTING [WITH] <val> | <val> [NOT] LIKE <val> [ESCAPE <val>] | <val> [NOT] SIMILAR TO <val> [ESCAPE <val>] | <val> <operator> {ALL | SOME | ANY} (<select_list>) | [NOT] EXISTS (<select_expr>) | [NOT] SINGULAR (<select_expr>) | (<check_condition>) | NOT <check_condition> | <check_condition> OR <check_condition> | <check_condition> AND <check_condition> <operator> ::= <> | != | ^= | ~= | = | < | > | <= | >= | !< | ^< | ~< | !> | ^> | ~> <val> ::= colname ['['array_idx [, array_idx ...]']'] | <literal> | <context_var> | <expression> | NULL | NEXT VALUE FOR genname | GEN_ID(genname, <val>) | CAST(<val> AS <cast_type>) | (<select_one>) | func([<val> [, <val> ...]]) <cast_type> ::= <domain_or_non_array_type> | <array_datatype> <domain_or_non_array_type> ::= !! Siehe Skalardatentypensyntax !! <table_attrs> ::= <table_attr> [<table_attr> ...] <table_attr> ::= <sql_security> | {ENABLE | DISABLE} PUBLICATION <sql_security> ::= SQL SECURITY {INVOKER | DEFINER} <gtt_table_attrs> ::= <gtt_table_attr> [gtt_table_attr> ...] <gtt_table_attr> ::= <sql_security> | ON COMMIT {DELETE | PRESERVE} ROWS
Parameter | Beschreibung |
---|---|
tablename |
Name (Bezeichner) für die Tabelle.Sie darf bis zu 63 Zeichen lang sein und muss in der Datenbank eindeutig sein. |
filespec |
Dateispezifikation (nur für externe Tabellen).Vollständiger Dateiname und Pfad in einfachen Anführungszeichen, korrekt für das lokale Dateisystem und auf einem Speichergerät, das physisch mit dem Host-Computer von Firebird verbunden ist. |
colname |
Name (Bezeichner) für eine Spalte in der Tabelle.Darf bis zu 3 Zeichen lang sein und muss in der Tabelle eindeutig sein. |
tconstraint |
Tabellenbeschränkung |
table_attrs |
Attribute einer normalen Tabelle |
gtt_table_attrs |
Attribute einer globalen temporären Tabelle |
datatype |
SQL-Datentyp |
domain_name |
Domainname |
start_value |
Der Anfangswert der Identitätsspalte |
inc_value |
Der Inkrement- (oder Schritt-)Wert der Identitätsspalte, der Standardwert ist '1';Null ( |
col_constraint |
Spaltenbeschränkung |
constr_name |
Der Name (Bezeichner) einer Einschränkung.Kann aus bis zu 63 Zeichen bestehen. |
other_table |
Der Name der Tabelle, auf die von der Fremdschlüsseleinschränkung verwiesen wird |
other_col |
Der Name der Spalte in other_table, auf die der Fremdschlüssel verweist |
literal |
Ein Literalwert, der im angegebenen Kontext zulässig ist |
context_var |
Jede Kontextvariable, deren Datentyp im angegebenen Kontext zulässig ist |
check_condition |
Die auf eine CHECK-Einschränkung angewendete Bedingung, die entweder als wahr, falsch oder |
collation |
Collation |
select_one |
Eine skalare |
select_list |
Eine |
select_expr |
Eine |
expression |
Ein Ausdruck, der zu einem Wert auflöst, der im gegebenen Kontext zulässig ist |
genname |
Name der Sequenz (Generator) |
func |
Interne Funktion oder UDF |
Die Anweisung CREATE TABLE
erstellt eine neue Tabelle.Jeder Benutzer kann es erstellen und sein Name muss unter den Namen aller Tabellen, Ansichten und gespeicherten Prozeduren in der Datenbank eindeutig sein.
Eine Tabelle muss mindestens eine nicht berechnete Spalte enthalten, und die Namen der Spalten müssen in der Tabelle eindeutig sein.
Eine Spalte muss entweder einen expliziten SQL-Datentyp haben, den Namen einer Domäne, deren Attribute für die Spalte kopiert werden, oder als COMPUTED BY
einen Ausdruck (ein berechnetes Feld) definiert sein.
Eine Tabelle kann eine beliebige Anzahl von Tabelleneinschränkungen haben, einschließlich keiner.