Определение таблицы
Оператор определения таблицы имеет следующий синтаксис:
<table definition> ::= CREATE TABLE <table name> (<table element> [{,<table element>}...]) <table element> ::= <column definition> |<table constraint definition>
Кроме имени таблицы, в операторе специфицируется список элементов таблицы, каждый из которых служит либо для определения столбца, либо для определения ограничения целостности определяемой таблицы. Требуется наличие хотя бы одного определения столбца. Оператор CREATETABLE определяет так называемую базовую таблицу, т.е. реальное хранилище данных.
Для определения столбцов таблицы и ограничений целостности используются специальные операторы, которые должны быть вложены в оператор определения таблицы.
Пояснения:
(a) если определение ограничения столбца содержит ограничение столбца NOTNULL, то оно эквивалентно ограничению таблицы CNDCHECK (CISNOTNULL) CA;
(b) если определение ограничения столбца содержит спецификацию уникальности, то оно эквивалентно определению ограничения таблицы, содержащему CND <uniquespecification> (C) CA
(c) если определение ограничения столбца содержит спецификацию ссылок (referencesspecification), то оно эквивалентно следующему табличному ограничению: CNDFOREIGNKEY (C) <referencesspecification> CA
(d) если определение ограничения столбца содержит определение проверочного ограничения, то оно эквивалентно определению табличного ограничения CNDCHECK (<searchcondition>) CA; при этом каждая ссылка на столбец, непосредственно содержащаяся в условии поиска, должна указывать на столбец C.
При определении столбца можно указать значение, которое должно присваиваться этому столбцу по умолчанию, если при занесении новых строк в соответствующую таблицу значение данного столбца не задается явно. Раздел умолчаний определяется следующим синтаксисом:
<default clause> ::= DEFAULT <default option> <default option> ::= <literal> |<datetime value function> |USER |CURRENT_USER |SESSION_USER |SYSTEM_USER NULL
Смысл этой конструкции ясен из синтаксических правил.