Модификация структуры таблицы

После того как таблица создана, можно в любое время (даже если таблица заполнена) изменить ее структуру. Для модификации структуры таблицы предназначена инструкция ALTER TABLE, которая имеет следующий формат:

ALTER TABLE <имя таблицы>

{ADD {COLUMN <тип> [(<размер>)] [NOT NULL] ICONSTRAINT <имя индекса> <ограничение>}

IDROP {COLUMN <имя столбца> ICONSTRAINT <имя индекса;»}};

Инструкция ALTER TABLE дает возможность добавить (ADD) или удалить (DROP) один столбец (COLUMN) или одно ограничение целостности (CONSTRAINT) в виде индекса. Метасимволы имеют тот же смысл, что и в команде CREATE TABLE. Метасимвол < ограниченно может быть представлен спецификацией или первичного ключа, или альтернативного ключа, или внешнего ключа. Для репетиции выполните нижеследующие примеры.

Пример 9 . Переименовать поле «фак» таблицы «Кафедра» на «факультет».

ALTER TABLE Кафедра ADD COLUMN факультет TEXT (4);

ALTER TABLE Кафедра DROP CONSTRAINT Кафедра_Факультет;

ALTER TABLE Кафедра DROP COLUMN фак;

ALTER TABLE Кафедра ADD CONSTRAINT Кафедра_Факультет FOREIGN KEY (факультет) REFERENCES Факультет (аббревиатура)

ON UPDATE CASCADE ON DELETE SET NULL);

В этом примере первая команда ALTER TABLE добавляет новое поле «факультет». Вторая—удаляет индекс, ассоциированный с внешним ключом «фак», который моделирует связь с таблицей «Факультет». Третья — удаляет столбец «фак». И, наконец, четвертая — присваивает столбцу «факультет» статус внешнего ключа, восстанавливая тем самым связь с таблицей «Факультет» и контроль ограничения ссылочной целостности.

Пример 10. Добавить новое поле «название» — альтернативный ключ таблицы «Дисциплина».

ALTER TABLE Дисциплина ADD COLUMN название TEXT (20);

ALTER TABLE Дисциплина ADD CONSTRAINT АК_Дисциплина UNIQUE (название);

Задание. В таблице «Дисциплина» создать поле «исполнитель», определенное на домене TEXT (8) — внешний ключ для связи с таблицей «Кафедра» по полю «шифр» («кафедра читает курс»). В качестве ограничения ссылочной целостности по связи между таблицами «Дисциплина» и «Кафедра» задайте стратегию ON UPDATE CASCADE ON DELETE SET NULL. Изменение шифра кафедры-исполнителя в таблице «Кафедра» будет передано по каскаду в таблицу-потомок «Дисциплина» и приведет к изменению внешнего ключа «исполнитель». Удаление строки родительской таблицы «Кафедра» не должно привести к удалению соответствующих строк.

После модификации структуры окончательный вариант схемы реляционной базы данных для предметной области «Кафедра» будет выглядеть, как на рис. 12.

Схема реляционной базы данных

Рис. 12. Схема реляционной базы данных

Удаление таблицы

Созданную и заполненную таблицу можно удалить при помощи инструкции DROP TABLE.

DROP TABLE <имя таблицы>;

Перед удалением таблицы ее следует закрыть. При удалении таблицы, имеющей связанные с ней таблицы-потомки, в принципе возможны два исхода. Удаление родительской таблицы будет запрещено, пока не удалены все ее таблицы-потомки. Если разрешено каскадирование, то удаление родительской таблицы повлечет за собой удаление и всех ее таблиц-потомков. В SQL Microsoft Jet реализуется первый случай.

Пример 11. Удалить таблицу «Экзамен». Ее удаление не должно повлечь за собой проблемы в отношении других связанных с ней таблиц.

DROP TABLE Экзамен;

После удаления таблицы «Экзамен» восстановите ее при помощи соответствующей сохраненной команды (SQL запроса) CREATE TABLE.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >