Инструкция CREATE TABLE (SQL Server Compact)

Создает новую таблицу Microsoft SQL Server Compact 3.5 (SQL Server Compact 3.5).

Синтаксис

CREATE TABLE table_name 
   ( { < column_definition > | < table_constraint > } [ ,...n ] 
   ) 
< column_definition > ::= 
   { column_name data_type } 
   [ { DEFAULT constant_expression 
      | [ IDENTITY [ ( seed , increment ) ]
      ]
    } ] 
   [ ROWGUIDCOL ] 
   [ < column_constraint > [ ...n ] ]
< column_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ NULL | NOT NULL ] 
      | [ PRIMARY KEY | UNIQUE ] 
      | REFERENCES ref_table [ ( ref_column ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ] 
      [ ON UPDATE { CASCADE | NO ACTION } ] 
    }
< table_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ { PRIMARY KEY | UNIQUE } 
      { ( column [ ,...n ] ) } 
      ]
   | FOREIGN KEY 
     ( column [ ,...n ] )
      REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ]
      [ ON UPDATE { CASCADE | NO ACTION } ] 
   }

Аргументы

  • table_name
    Имя новой таблицы. Имена таблиц должны соответствовать правилам для идентификаторов. table_name должно быть уникальным для данной базы данных. table_name может содержать до 128 символов.
  • column_name
    Имя столбца в таблице. Имена столбцов должны соответствовать правилам для идентификаторов и быть уникальными в таблице.

    ms173393.note(ru-ru,SQL.100).gifПримечание.
    Имена столбцов в базах данных SQL Server Compact 3.5 не должны начинаться с «__sys». Например, __sysobjects является недопустимым именем столбца.

  • DEFAULT
    Указывает значение для столбца, если оно не было явным образом задано во время вставки. Определения DEFAULT можно применять к любому столбцу, кроме тех, которые определены свойством IDENTITY. Определения DEFAULT удаляются, когда таблица удаляется из памяти. По умолчанию можно использовать значение константы.
  • IDENTITY
    Указывает, что новый столбец является столбцом идентификаторов. При добавлении новой строки в таблицу SQL Server Compact 3.5 присваивает столбцу уникальное добавочное значение. Столбцы идентификаторов обычно используются вместе с ограничениями по первичному ключу в качестве уникальных идентификаторов строк в таблице. Свойство IDENTITY может быть назначено только столбцам int. В таблице можно создать только один столбец идентификаторов. Ограниченные значения по умолчанию и ограничения DEFAULT не могут использоваться в столбце идентификаторов. Необходимо задать как начальное значение, так и приращение, либо ни то, ни другое. Если ни одно из значений не указано, то действительно значение по умолчанию — (1,1).
  • seed
    Значение, используемое в первой строке, которая загружается в таблицу.
  • increment
    Приращение, добавляемое к значению идентификатора предыдущей загруженной строки.
  • ROWGUIDCOL
    Указывает, что новый столбец является столбцом глобальных уникальных идентификаторов строк. В качестве столбца ROWGUIDCOL можно назначить только один столбец uniqueidentifier в таблице. Свойство ROWGUIDCOL может быть назначено только столбцу uniqueidentifier.

    Свойство ROWGUIDCOL автоматически создает значения для новых строк, вставленных в таблицу.

  • CONSTRAINT
    Необязательное ключевое слово, указывающее начало определения ограничения PRIMARY KEY, UNIQUE или FOREIGN KEY. Ограничения — это особые свойства, обеспечивающие целостность данных и создающие для таблицы и ее столбцов индексы особых типов.
  • constraint_name
    Имя ограничения. Определение constraint_name является необязательным и должно быть уникальным для данной базы данных. Если constraint_name не указано, SQL Server Compact 3.5 создает имя ограничения.
  • NULL | NOT NULL
    Ключевые слова, которые указывают, разрешены ли нулевые значения в столбце. NULL, в общем-то, не является ограничением, но может быть определено так же, как и NOT NULL.
  • PRIMARY KEY
    Ограничение, с помощью уникального индекса устанавливающее целостность сущностей в одном или нескольких столбцах. В таблице можно создать только одно ограничение PRIMARY KEY.
  • UNIQUE
    Ограничение, с помощью уникального индекса обеспечивающее целостность сущностей в одном или нескольких столбцах. Столбцы в ограничении UNIQUE могут иметь значение NULL, но каждому столбцу можно задать только одно значение NULL. В таблице возможно наличие нескольких ограничений UNIQUE.

    ms173393.note(ru-ru,SQL.100).gifПримечание.
    SQL Server Compact 3.5 может использовать индексы для введения ограничений PRIMARY KEY и UNIQUE. Полагаться на эту возможность либо пытаться изменить какие-либо индексы, созданные как часть ограничения, не рекомендуется.

  • FOREIGN KEY...REFERENCES
    Ограничение, обеспечивающее ссылочную целостность данных в столбце. Ограничение FOREIGN KEY требует, чтобы каждое значение в данном столбце существовало и в указанном столбце в ссылочной таблице.
  • ref_table
    Имя таблицы, на которую ссылается ограничение FOREIGN KEY.
  • ( ref_column [ ,... n] )
    Столбец или список столбцов таблицы, на которую ссылается ограничение FOREIGN KEY.
  • ON DELETE {CASCADE | NO ACTION}
    Определяет действие, которое будет применено к строке в создаваемой таблице, если у этой строки имеется ссылающееся отношение, а строка, на которую она ссылается, удалена из родительской таблицы. Значение по умолчанию — NO ACTION.

    Если указан параметр CASCADE, строка из ссылающейся таблицы будет удалена после удаления соответствующей указываемой строки из родительской таблицы. Если указан параметр NO ACTION, SQL Server Compact 3.5 возвращает ошибку, и выполняется откат удаления указываемой строки из родительской таблицы.

  • ON UPDATE {CASCADE | NO ACTION}
    Определяет действие, которое будет применено к строке в создаваемой таблице, если у этой строки имеется ссылающееся отношение, а строка в родительской таблице, на которую она ссылается, обновлена. Значение по умолчанию — NO ACTION.

    Если указан параметр CASCADE, строка в ссылающейся таблице будет обновлена после обновления соответствующей указываемой строки в родительской таблице. Если указан параметр NO ACTION, SQL Server Compact 3.5 возвращает ошибку и выполняется откат обновления указываемой строки в родительской таблице.

  • column
    Столбец или список столбцов, заключенные в скобки, используемые в ограничениях таблицы для обозначения столбцов, использованных в определении ограничения.

Замечания

Определения столбца

При создании таблицы необходимо указать по крайней мере одно определение столбца.

Ограничения

  • Ограничения PRIMARY KEY
    • В таблице возможно наличие только одного ограничения по первичному ключу.
    • Каждый первичный ключ создает индекс.
    • Все столбцы, ограниченные по первичному ключу, должны иметь пометку NOT NULL. Если допустимость нулевого значения не указана, то для всех столбцов, ограниченных по первичному ключу, устанавливается параметр NOT NULL.
  • Ограничения UNIQUE
    • Каждое ограничение по уникальности создает индекс.
  • Ограничения FOREIGN KEY
    • Если столбцу, имеющему ограничение по внешнему ключу, задается значение, отличное от NULL, такое же значение должно существовать и в указываемом столбце; в противном случае будет возвращено сообщение о нарушении внешнего ключа.
    • Ограничение по внешнему ключу может обратиться к другому столбцу в этой же таблице, то есть выполнить самовызов. Однако ограничение по внешнему ключу нельзя использовать для создания самовызываемого или циклического ограничения по внешнему ключу.
    • Предложение REFERENCES ограничения по внешнему ключу на уровне столбца может вывести только один ссылочный столбец. Он должен содержать такой же тип данных, как и столбец, для которого определено ограничение.
    • Предложение REFERENCES ограничения по внешнему ключу на уровне таблицы должно содержать такое же число ссылочных столбцов, какое содержится в списке столбцов в ограничении. Тип данных каждого ссылочного столбца также должен совпадать с типом данных соответствующего столбца из списка.
    • Ограничения по внешнему ключу могут ссылаться только на ограничения по первичному ключу или по уникальности в ссылочной таблице. Ограничения по внешнему ключу не могут ссылаться на уникальные индексы.
  • Дополнительные сведения об ограничениях
    • Индекс, созданный для ограничения, нельзя удалить при помощи инструкции DROP INDEX. Ограничение можно удалить при помощи инструкции ALTER TABLE DROP CONSTRAINT.
    • Имена ограничений должны удовлетворять правилам для идентификаторов, но имя не должно начинаться знаком номера (#). Если ключевое слово CONSTRAINT и constraint_name не указаны, ограничению присваивается имя, созданное системой.
    • Если ограничение нарушается в инструкции INSERT, UPDATE или DELETE, выполнение инструкции останавливается.

Определения DEFAULT

Столбец может иметь только определение DEFAULT. Оно может содержать постоянные значения или постоянные функции.

Правила допустимости нулевого значения в рамках определения таблицы

Допустимость нулевого значения столбца определяет, будет ли нулевое значение (NULL) принято в столбец как данные. NULL — это не ноль и не пробел. Это значит, что запись не была сделана, или что было добавлено явное значение NULL, что обычно обозначает, что значение либо не известно, либо не применимо.

Пример

В следующих примерах показано, как:

  1. создать таблицу с двумя столбцами, один из которых является столбцом идентификаторов как PRIMARY KEY;
  2. создать таблицу с одним столбцом с ограничением PRIMARY KEY;
  3. создать таблицу, один из столбцов которой ссылается на столбец в другой таблице.
CREATE TABLE MyCustomers (CustID int IDENTITY (100,1) PRIMARY KEY, CompanyName nvarchar (50))

CREATE TABLE MyCustomers2 (CustID int CONSTRAINT pkCustId PRIMARY KEY)

CREATE TABLE MyOrders (OrderID int, CustID int REFERENCES MyCustomers(CustID))