Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
327.17 Кб
Скачать

Оператор create table3

Создает новую таблицу. Формат

CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])

Оператор CREATE TABLE имеет следующие части:

Часть

Описание

table

Имя создаваемой таблицы

field1, field2,...

Названия создаваемых полей. В новой таблице нужно создать хотя бы одно поле.

type

Тип поля

size

Размер поля в символах (для Text и Binary полей)

index1, index2

Выражения CONSTRAINT, определяющие простые индексы (см. оператор CONSTRAINT)

multifieldindex

Выражение CONSTRAINT, определяющее составной индекс (см. оператор CONSTRAINT)

Оператор CREATE TABLE создает новую таблицу и устанавливает свойства ее полей. Если для поля указано NOT NULL, оно требует обязательного ввода. Свойство NOT NULL можно указывать для отдельного поля или в именованом выражении CONSTRAINT. Соответственно, оно будет применяться к одному полю или ко всем перечисленным. Его можно устанавливать для поля только один раз, иначе происходит ошибка.

Выражение CONSTRAINT устанавливает ограничения для отдельного поля и может использоваться для создания первичного ключа. Для создания ключей (в т.ч. первичного) в существующей таблице используется оператор CREATE INDEX.

Следующие запросы меняют таблицы в базе Northwind (если изменения нежелательны, нужно предварительно сделать копию). Запросы вводятся в SQL окне конструктора запросов, затем нужно выполнить запрос.

Создается таблица с двумя текстовыми полями:

CREATE TABLE FirstTable (FirstName TEXT, LastName TEXT);

Создается таблица с двумя текстовыми и Date/Time полем, создается уникальный составной индекс на основе всех трех полей:

CREATE TABLE SecondTable (FirstName TEXT, LastName TEXT, DateOfBirth DATETIME, CONSTRAINT MyTableConstraint UNIQUE (FirstName, LastName, DateOfBirth));

Создается таблица с двумя текстовыми и Integer полем, поле SSN является первичным ключом:

CREATE TABLE ThirdTable (FirstName TEXT, LastName TEXT, SSN INTEGER CONSTRAINT MyFieldConstraint PRIMARY KEY);

Выражение constraint4

Используется в операторах ALTER TABLE и CREATE TABLE для установки свойств полей – наложения или удаления ограничений. Позволяет также устанавливать связь с другой таблицей. Имеются две формы – для одного поля и для нескольких.

Ограничения для одного поля:

CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES foreigntable [(foreignfield1, foreignfield2)]}

Ограничения для нескольких полей

CONSTRAINT name {PRIMARY KEY (primary1[, primary2 [, ...]]) | UNIQUE (unique1[, unique2 [, ...]]) | NOT NULL (notnull1[, notnull2 [, ...]]) | FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]}

Выражение CONSTRAINT имеет следующие части:

Часть

Описание

name

Имя создаваемого ограничения

primary1, primary2

Имя поля/полей, образующих первичный ключ

unique1, unique2

Имя поля/полей, образующих уникальный индекс

notnull1, notnull2

Имя поля/полей, обязательных для заполнения

ref1, ref2

Имя поля/полей, внешнего ключа, ссылающихся на другую таблицу

foreigntable

Имя другой таблицы, содержащей указанные поля

foreignfield1, foreignfield2

Имя поля/полей другой таблицы, на которые ссылаются ref1, ref2. Поля, входящие в ее первичный ключ можно не указывать.

Синтаксис для единичного поля можно использовать в операторах ALTER TABLE и CREATE TABLE в определении поля сразу после указания типа, синтаксис для нескольких полей можно использовать в тех же операторах вне определений полей со служебным словом CONSTRAINT.

Выражение CONSTRAINT может устанавливать следующие ограничения:

  • UNIQUE – определяет поле с уникальными значениями, т.е. две записи не могут содержать в этом поле одинаковые значения. Если полей несколько, в двух записях невозможны одинаковые сочетания их значений.

  • PRIMARY KEY – поле/поля образуют первичный ключ. Все значения должны быть разными и не Null. Т.к. в таблице только один первичный ключ, при попытке создать второй происходит ошибка.

  • NOT NULL – поле/поля не могут содержать Null, т.е. обязательны для заполнения.

  • FOREIGN KEY – поле/поля образуют внешний ключ. Если первичный ключ внешней таблицы состоит из нескольких полей, нужно использовать форму CONSTRAINT для нескольких полей, содержащую перечень ссылающихся полей, имя внешней таблицы и имена полей во внешней таблицы, на которые ссылаются перечисленные, указанные в том же порядке. Если ссылка идет не поля первичного ключа внешней таблицы, их указывать не нужно, т.к. эти поля подразумеваются по умолчанию.

Следующие запросы меняют таблицы в базе Northwind (если изменения нежелательны, нужно предварительно сделать копию). Запросы вводятся в SQL окне конструктора запросов, затем нужно выполнить запрос.

Создается таблица с двумя текстовыми и Date/Time полем, создается уникальный составной индекс на основе всех трех полей:

CREATE TABLE SecondTable (FirstName TEXT, LastName TEXT, DateOfBirth DATETIME, CONSTRAINT MyTableConstraint UNIQUE (FirstName, LastName, DateOfBirth));

Создается таблица с двумя текстовыми и Integer полем, поле SSN является первичным ключом:

CREATE TABLE ThirdTable (FirstName TEXT, LastName TEXT, SSN INTEGER CONSTRAINT MyFieldConstraint PRIMARY KEY);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]