Изменение структуры таблиц.
Пример 1.
Создание реляционных таблиц.
Создание реляционной базы данных означает спецификацию состава полей: указание имени, типа и длины каждого поля (если это необходимо). Каждая таблица имеет уникальное имя.
Синтаксис оператора создания новой таблицы:
CREATE TABLE таблица (поле1 тип [(размер)] [индекс 1]
[, поле2 тип [(размер)] [индекс2] [,…]] [, составной индекс[,…]])
где таблица — имя создаваемой таблицы, поле1, поле2 — имена полей таблицы, тип — тип поля;
размер — размер текстового поля,
индекс 1, индекс 2 — директивы создания простых индексов;
составной индекс — директива создания составного индекса.
Каждый индекс имеет уникальное в пределах данной таблицы имя. Для создания простого индекса используется фраза (помещается за именем поля):
CONSTRAINT имя индекса {PRIMARY KEY|UNIQUE| REFERENCES внешняя таблица [(внешнее поле)]}
Директива создания составного индекса (помещается в любом месте после определения его элементов):
CONSTRAINT имя {PRIMARY KEY (ключевое 1[, ключевое2 [, …]]) IUNIQUE (уникальное 1[,...]]) | FOREIGN KEY (ссылка1[, ссылка2[,…]]) REFERENCES внешняя таблица [(внешнее поле1[, внешнее поле2[,…]])]}.
|
|
Служебные слова:
UNIQUE — уникальный индекс (в таблице не может быть двух записей, имеющих одно и то же значение полей, входящих в индекс);
PRIMARY KEY — первичный ключ таблицы (может состоять из нескольких полей; упорядочивает записи таблицы);
FOREIGN KEY — внешний ключ для связи с другими таблицами (может состоять из нескольких полей);
REFERENCES — ссылка на внешнюю таблицу.
CREATE TABLE Студент
([Имя] TEXT,
[Фамилия] TEXT,
[Дата рождения] DATETIME,
CONSTRAINT Адр UNIQUE ([Имя]), [Фамилия], [Дата рождения]))
В результате выполнения запроса будет создана таблица СТУДЕНТ, в составе которой:
• два текстовых поля: Имя, Фамилия;
• одно поле типа дата/время — Дата рождения.
Будет создан составной индекс с именем Адр по значениям указанных полей, индекс имеет уникальное значение, в таблице не может быть двух записей с одинаковыми значениями полей, образующих индекс.
При необходимости можно изменить структуру таблицы:
• удалить существующие поля;
• добавить новые поля;
• создать или удалить индексы.
Все указанные действия затрагивают одновременно только одно поле или один индекс.
ALTER TABLE таблица
ADD{[COLUMN]поле тип[(paзмep)][CONSTRAINT индекс]
CONSTRAINT составной индекс}|
DROP {[COLUMN] поле i CONSTRAINT имя индекса}}
Опция ADD обеспечивает добавление поля, опция DROP — удаление поля таблицы, добавление опции CONSTRAINT означает подобные действия для индексов таблицы.
ALTER TABLE Студент ADD COLUMN [Группа] ТЕХТ(5)
Для создания нового индекса для существующей таблицы можно использовать также команду:
CREATE [UNIQUE] INDEX индекс
ON таблица (поле[, …])
[WITH {PRIMARY|DISALLOW NULL|IGNORE NULL}]
Фраза WITH обеспечивает наложение условий на значения полей, включенных в индекс:
DISALLOW NULL — запретить пустые значения в индексированных полях новых записей;
IGNORE NULL — включать в индекс записи, имеющие пустые значения в индексированных полях.