Функция
Определение базовой таблицы или глобальной временной таблицы.
Спецификация
<создание базовой таблицы>::=
<кодировка символьных данных таблицы>::=
<встроенная кодировка>::=
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
<вычисляемое значимое>::=
<фильтр для фразового поиска>::=
<мандатный уровень доступа к таблице>::=
<мандатный уровень доступа к столбцу>::=
<автоматическое наращивание значений>::=
<ограничение 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}}]
<контролируемое значение столбца>::=
<значение из последовательности>::=
<генерируемое значение>::=
<ссылочная целостность>::=
<спецификация родительской таблицы>::=
<спецификация схемы таблицы>::=
<спецификация действий>::=
[ON UPDATE {CASCADE|SET NULL|SET DEFAULT|{NO ACTION|RESTRICT}}]
[ON DELETE {CASCADE|SET NULL|SET DEFAULT|{NO ACTION|RESTRICT}}]
<спецификация параметров таблицы>::=
<создание глобальной временной таблицы>::=
<список элементов таблицы>::=
<действия при завершении транзакции>::=
ON COMMIT {DELETE|PRESERVE} ROWS
<создание копии базовой таблицы>::=
Синтаксические правила
-
Опция IF NOT EXISTS
отменяет выполнение оператора, если указанная таблица уже существует в БД.
-
Опция OR REPLACE
заставляет удалять существующую в БД таблицу (вместе со всеми её данными) и создавать новую таблицу под тем же именем, возможно, с новыми параметрами. На удаляемую таблицу не должно быть ссылок из других таблиц/представлений БД.
-
Одновременное использование опций IF NOT EXISTS
и OR REPLACE
запрещено.
-
Команда создания таблицы должна включать в себя, по крайней мере, одно <определение столбца>
.
-
Для создания таблицы пользователь должен иметь уровень прав RESOURCE или DBA.
-
<Имя таблицы>
должно быть уникальным среди имен существующих в БД таблиц,
представлений или их синонимов в пределах <имени схемы>
либо текущей схемы (при её отсутствии в спецификации).
Примечание
Ядро СУБД при выполнении SELECT-запросов, содержащих группировку или некоторые другие конструкции, создает для своих нужд временные таблицы с именами вида "Table#nnn#", где nnn – системный номер таблицы, поэтому, во избежание конфликтов, не рекомендуется давать пользовательским таблицам похожие имена.
Примеры
create or replace table Admin.Auto …
create if not exist table "Петров". Sale …
create or replace table "Ведомость товаров" as Year_Ved …