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

Модификация определения таблицы (оператор alter table)

В стандарте ISO предусмотрено применение оператора ALTER TABLE для изменения структуры таблицы после ее создания. Определение оператора ALTERTABLE состоит из шести опций, позволяющих выполнить следующие действия:

  • ввести новый столбец в таблицу;

  • удалить столбец из таблицы;

  • ввести новое ограничение таблицы;

  • удалить ограничение таблицы;

  • задать для столбца значение, применяемое по умолчанию;

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

Ниже приведен основной формат этого оператора.

LTER TABLE TableName

[ADD [COLUMN] columnName dataType [NOT NULL] [UNIQUE]

[DEFAULT defaultOption] [CHECK searchCondition)]

[COLUMN] columnName [RESTRICT \ CASCADE]

[ADD [CONSTRAINT [ConstraintName] ] tableConstraintDefinitian]

[DROP CONSTRAINT ConstraintName [RESTRICT \ CASCADE]]

[ALTER [COLUMN] SET DEFAULT defaultOption]

[ALTER [COLUMN] DROP DEFAULT]

Почти все параметры данного оператора совпадают с параметрами оператора CREATE TABLE. В качестве параметра с определением ограничения таблицы CaJbleConstraintDefinition может применяться одна из конструкций PRIMARY KЕY, UNIQUE, FOREIGN KEY или CHECK. Конструкция ADD COLUMN аналогична конструкции определения столбца в операторе CREATE TABLE. В конструкции DROP COLUMN задается имя столбца, удаляемого из определения таблицы, и имеется необязательная опция, позволяющая указать, является ли действие операции DROP каскадным или нет, как показано ниже.

  • RESTRICT. Операция DROP отвергается, если на данный столбец имеется ссылка в другом объекте базы данных (например, в определении представления). Это значение опции предусмотрено по умолчанию.

  • CASCADE. Выполнение операции DROP продолжается в любом случае и ссылки на столбец автоматически удаляются из любых объектов базы данных, где они имеются. Эта операция выполняется каскадно, поэтому если столбец удаляется из объекта, содержащего ссылку, то в базе данных выполняется проверка того, имеются ли ссылки на этот столбец в каком-либо ином объекте, такие ссылки уничтожаются и в этом объекте, и т.д.

Пример 7.2.2. Применение оператора ALTER TABLE

Измените определение таблицы Группа, удалив применяемое по умолчанию значение 'ТМ-31' для столбца НГ (номер студента в группе), а для столбца ГОДР (год рождения) предусмотрите по умолчанию значение '1986'.

ALTER TABLE Группа

ALTER ТМ-31 DROP DEFAULT;

ALTER TABLE Группа

ALTER ГОДР SET DEFAULT '1986';

Измените определение таблицы Группа, удалив ограничение, согласно которому в группе не должно быть меньше 0 и больше 35.

ALTER TABLE Группа

DROP CONSTRAINT КОЛ-ВО

Оператор ALTER TABLE предусмотрен не во всех диалектах языка SQL. А в некоторых диалектах оператор ALTER TABLE не может использоваться для удаления существующего столбца из таблицы. В подобных случаях, если столбец больше не требуется, он может просто игнорироваться, но оставаться в определении таблицы. Но если действительно требуется удалить столбец из таблицы, то необходимо выполнить следующее:

  • выгрузить все данные из таблицы;

  • удалить определение таблицы из базы данных с помощью оператора DROP TABLE;

  • определить новую таблицу с помощью оператора CREATE TABLE;

  • снова загрузить данные в новую таблицу.

Указанные этапы выгрузки и загрузки, как правило, выполняются с помощью вспомогательных программ специального назначения, которые входят в поставку СУБД. Но в любом случае существует также возможность создать временную таблицу, применить оператор INSERT, SELECT для загрузки данных из старой таблицы во временную таблицу, а затем из временной таблицы в новую таблицу.

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