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

Функция

Определение базовой таблицы или глобальной временной таблицы.

Спецификация
                                                               
< кодировка символьных данных таблицы >::=
[CHARACTER SET "кодировка"]
< встроенная кодировка >::=
DEFAULT|UTF-8
< идентификатор кодировки >::=
строка системной таблицы $$$CHARSET
< тип данных >::=
{
{CHAR|CHARACTER} [(длина)] [CHARACTER SET "кодировка"]
|{VARCHAR|CHARACTER VARYING|CHAR VARYING} (длина)
[CHARACTER SET "кодировка"]
|BYTE [(длина)]
|{VARBYTE|BYTE VARYING} (длина)
|SMALLINT
|{INTEGER|INT}
|BIGINT
|REAL
|DOUBLE [PRECISION]
|FLOAT [(точность)]
|{DECIMAL|DEC|NUMERIC} [(точность[, мантисса])]
|DATE
|BOOLEAN
|{NCHAR|NATIONAL CHAR|NATIONAL CHARACTER} [(длина)]
|{NCHAR VARYING|NATIONAL CHAR VARYING|NVARCHAR
|NATIONAL CHARACTER VARYING} (длина)
|{BLOB|LONG RAW} [CHARACTER SET "кодировка"]
|EXTFILE [ROOT 'каталог']
}
< подставляемое значение >::=
< значение по умолчанию >::=
< задаваемое значение >::=
{SYSDATE|NOW}
|{LOCALTIME |LOCALTIMESTAMP}
|CURRENT_DATE
|{CURRENT_TIME|CURRENT_TIMESTAMP}
| NULL
| USER
< вычисляемое значимое >::=
< фильтр для фразового поиска >::=
DEFAULT FILTER имя фильтра
< мандатный уровень доступа к таблице >::=
LEVEL (RAL, WAL)
< мандатный уровень доступа к столбцу >::=
LEVEL (RAL, WAL)
< автоматическое наращивание значений >::=
{AUTOROWID | AUTOINC [INITIAL (начальное значение)] | AUTOINC RANGE(диапазон)}
< ограничение NULL-значений >::=
{NOT NULL | NULL}
< ограничение уникальности >::=
PRIMARY KEY
|UNIQUE
|ON UPDATE {SYSDATE|NOW|LOCALTIME|LOCALTIMESTAMP|CURRENT_DATE
|CURRENT_TIME | CURRENT_TIMESTAMP}
< ссылочная целостность столбца >::=
< каскадные ограничения >::=
[ON UPDATE {CASCADE | SET NULL | SET DEFAULT | {NO ACTION | RESTRICT}}]
[ON DELETE {CASCADE | SET NULL | SET DEFAULT | {NO ACTION | RESTRICT}}]
< контролируемое значение столбца >::=
< значение из последовательности >::=
GENERATED [{ALWAYS | BY DEFAULT}] AS IDENTITY (последовательность)
< генерируемое значение >::=
GENERATED {ALWAYS | BY DEFAULT} AS {логическое выражение | значимое выражение | SYS_GUID()}
< начальное значение >::=
< нижняя граница >::=
< верхняя граница >::=
< ссылочная целостность >::=
< спецификация родительской таблицы >::=
< спецификация схемы таблицы >::=
< спецификация действий >::=
[ON UPDATE {CASCADE | SET NULL | SET DEFAULT | {NO ACTION | RESTRICT}}]
[ON DELETE {CASCADE | SET NULL | SET DEFAULT | {NO ACTION | RESTRICT}}]
< первичный ключ >::=
PRIMARY KEY (имя столбца[, ...])
< уникальный ключ >::=
UNIQUE (имя столбца[, ...]|VALUE)
< внешний ключ >::=
< логическое условие >::=
< спецификация параметров таблицы >::=
< последовательность >::=
[START WITH начальное значение ] [INCREMENT BY шаг]
[MAXVALUE верхняя граница | NO MAXVALUE]
[MINVALUE нижняя граница | NO MINVALUE]
[CYCLE|NO CYCLE]
< табличный параметр >::=
{MAXROWID | MAXROW | PCTFILL | PCTFREE | BLOBPCT} беззнаковое целое
< файловый параметр >::=
{INDEXFILES | DATAFILES | BLOBFILES}
количество файлов [(описатель файла[, …])]
< описатель файла >::=
< количество файлов >::=
< размер файла >::=
< синоним таблицы >::=
< загрузка таблицы >::=
< создание глобальной временной таблицы >::=
< действия при завершении транзакции >::=
ON COMMIT {DELETE | PRESERVE} ROWS
< создание копии базовой таблицы >::=
CREATE [IF NOT EXISTS|OR REPLACE] TABLE целевая таблица LIKE исходная таблица
< целевая таблица >::=
< исходная таблица >::=
Синтаксические правила
  1. Опция IF NOT EXISTS отменяет выполнение оператора, если указанная таблица уже существует в БД.

  2. Опция OR REPLACE заставляет удалять существующую в БД таблицу (вместе со всеми её данными) и создавать новую таблицу под тем же именем, возможно, с новыми параметрами. На удаляемую таблицу не должно быть ссылок из других таблиц/представлений БД.

  3. Одновременное использование опций IF NOT EXISTS и OR REPLACE запрещено.

  4. Команда создания таблицы должна включать в себя, по крайней мере, одно < определение столбца >.

  5. Для создания таблицы пользователь должен иметь уровень прав RESOURCE или DBA.

  6. < Имя таблицы > должно быть уникальным среди имен существующих в БД таблиц, представлений или их синонимов в пределах < имени схемы > либо текущей схемы (при её отсутствии в спецификации).

    Примечание

    Ядро СУБД при выполнении SELECT-запросов, содержащих группировку или некоторые другие конструкции, создает для своих нужд временные таблицы с именами вида "Table#nnn#", где nnn – системный номер таблицы, поэтому, во избежание конфликтов, не рекомендуется давать пользовательским таблицам похожие имена.

Примеры
create or replace table Admin.Auto …
create if not exist table "Петров". Sale …
create or replace table "Ведомость товаров" as Year_Ved …