FirebirdSQL logo

CREATE TABLE

Назначение

Создание новой таблицы.

Доступно в

DSQL, ESQL

Синтаксис
CREATE [GLOBAL TEMPORARY] TABLE tablename
  [EXTERNAL [FILE] 'filespec']
  (<col_def> [, <col_def> | <tconstraint> ...])
  [ON COMMIT {DELETE | PRESERVE} ROWS]
  [SQL SECURITY {DEFINER | INVOKER}]
  [{ENABLE | DISABLE} PUBLICATION]

<col_def> ::=
    <regular_col_def>
  | <computed_col_def>
  | <identity_col_def>

<regular_col_def> ::=
  colname { <datatype> | domain_name }
  [DEFAULT {<literal> | NULL | <context_var>}]
  [NOT NULL]
  [<col_constraint>]
  [COLLATE collation_name]


<computed_col_def> ::=
  colname [{ <datatype> | domain_name }]
  {COMPUTED [BY] | GENERATED ALWAYS AS} (<expression>)

<identity_col_def> ::=
  colname [<datatype>]
  GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY [(<identity column options>)]
  [<col_constraint>]

<identity column options> ::=
  <identity column option> [<identity column option>]

<identity column option> ::=
    START WITH startvalue
  | INCREMENT [BY] incrementvalue


<datatype> ::=
    <scalar_datatype> | <blob_datatype> | <array_datatype>

<scalar_datatype> ::=  См. Синтаксис скалярных типов данных

<blob_datatype> ::= См. Синтаксис типа данных BLOB

<array_datatype> ::= См. Синтаксис массивов

<col_constraint> ::= [CONSTRAINT constr_name]
{   UNIQUE [<using_index>]
  | PRIMARY KEY [<using_index>]
  | REFERENCES other_table [(other_col)]
      [ON DELETE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
      [ON UPDATE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
      [<using_index>]
  | CHECK (<check_condition>)
}

<tconstraint> ::= [CONSTRAINT constr_name]
{   UNIQUE (<col_list>) [<using_index>]
  | PRIMARY KEY (<col_list>) [<using_index>]
  | FOREIGN KEY (<col_list>)
    REFERENCES other_table [(<col_list>)]
      [ON DELETE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
      [ON UPDATE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
      [<using_index>]
  | 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 <val>
  | <val> IS [NOT] {TRUE | FALSE | UNKNOWN}
  | <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> ::=
   <datatype>
  | [TYPE OF] domain_name
  | TYPE OF COLUMN rel.colname
Table 1. Параметры оператора CREATE TABLE
Параметр Описание

tablename

Имя таблицы, может содержать до 63 символов.

filespec

Спецификация файла (только для внешних таблиц).

colname

Имя столбца таблицы, может содержать до 63 символов.

datatype

Тип данных SQL.

domain_name

Имя домена.

startvalue

Начальное значение столбца идентификации.

identityvalue

Приращение столбца идентификации. Не может быть равно 0.

col_constraint

Ограничение столбца.

tconstraint

Ограничение таблицы.

constr_name

Имя ограничения, может содержать до 63 символов.

other_table

Имя таблицы, на которую ссылается внешний ключ.

other_col

Столбец таблицы, на которую ссылается внешний ключ.

using_index

Позволяет задать имя автоматически создаваемого индекса для ограничения, и опционально определить, какой это будет индекс — по возрастанию (по умолчанию) или по убыванию.

literal

Литерал.

context_var

Любая контекстная переменная, тип которой совместим с типом данных столбца.

check_condition

Условие проверки ограничения.Выполняется, если оценивается как TRUE или NULL/UNKNOWN.

collation_name

Порядок сортировки.Необходимо указывать если вы хотите чтобы порядок сортировки для столбца отличался от порядка сортировки для набора символов по умолчанию этого столбца.

select_one

Оператор SELECT выбирающий один столбец и возвращающий только одну строку.

select_list

Оператор SELECT выбирающий один столбец и возвращающий ноль и более строк.

select_expr

Оператор SELECT выбирающий несколько столбцов и возвращающий ноль и более строк.

experssion

Выражение.

genname

Имя последовательности (генератора).

func

Скалярная функция.

Оператор CREATE TABLE создаёт новую таблицу.Имя таблицы должно быть уникальным среди имён всех таблиц, представлений (VIEWs) и хранимых процедур базы данных.

Таблица может содержать, по меньшей мере, один столбец и произвольное количество ограничений таблицы.

Имя столбца должно быть уникальным для создаваемой таблицы.Для столбца обязательно должен быть указан либо тип данных, либо имя домена, характеристики которого будут скопированы для столбца, либо должно быть указано, что столбец является вычисляемым.

В качестве типа столбца можно использовать любой тип данных SQL.

Символьные столбцы

Для типов CHAR, VARCHAR и BLOB с подтипом TEXT можно указать набор символов в предложении CHARACTER SET.Если набор символов не указан, то по умолчанию принимается тот набор символов, что был указан при создании базы данных.Если же при создании базы данных не был указан набор символов, то по умолчанию принимается набор символов NONE.В этом случае данные хранятся и извлекаются, так как они были поданы.В столбец можно загружать данные в любой кодировке, но невозможно загрузить эти данные в столбец с другой кодировкой.Транслитерация между исходными и конечными кодировками не выполняется, что может приводить к ошибкам.

Необязательное предложение COLLATE позволяет задать порядок сортировки для строковых типов данных (за исключением BLOB). Если порядок сортировки не указан, то по умолчанию принимается порядок сортировки по умолчанию для указанного набора сортировки.