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

Функция

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

Спецификация
                                                               
<кодировка символьных данных таблицы>::=
[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 (последовательность)
<генерируемое значение>::=
<начальное значение>::=
<нижняя граница>::=
<верхняя граница>::=
<ссылочная целостность>::=
<спецификация родительской таблицы>::=
<спецификация схемы таблицы>::=
<спецификация действий>::=
[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 …