Введение в стандарты языка баз данных SQL

Определение таблицы


Оператор определения таблицы имеет следующий синтаксис:

<table definition> ::= CREATE TABLE <table name> (<table element> [{,<table element>}...]) <table element> ::= <column definition> |<table constraint definition>

Кроме имени таблицы, в операторе специфицируется список элементов таблицы, каждый из которых служит либо для определения столбца, либо для определения ограничения целостности определяемой таблицы. Требуется наличие хотя бы одного определения столбца. Оператор CREATETABLE определяет так называемую базовую таблицу, т.е. реальное хранилище данных.

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


Пояснения:

  • Определение столбца может входить в определение таблицы, объявление временной таблицы и в оператор изменения схемы таблицы (ALTERTABLE). Пусть T обозначает соответствующую таблицу. Имя столбца в определении столбца должно отличаться от имени любого существующего столбца таблицы T.
  • i-тый столбец таблицы описывается i-тым определением столбца в определении таблицы. Имя и тип данных или домен столбца специфицируется именем столбца и типом данных или именем домена соответственно. Пусть C - имя столбца из определения столбца.
  • Если в определение столбца входит определение ограничения столбца, то пусть CND обозначает определение имени ограничения, если оно задано, а иначе пусть соответствует строке нулевой длины; пусть CA обозначает атрибуты ограничения, если они заданы, а иначе пусть соответствует строке нулевой длины. Определение ограничения столбца эквивалентно следующим определениям ограничения таблицы:


      (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

    Смысл этой конструкции ясен из синтаксических правил.


    Содержание раздела