Команда ALTER TABLE используется для добавления, удаления или модификации колонки в уже существующей таблице.
Команда ALTER TABLE изменяет определение таблицы одним из следующих способов:
• добавляет столбец
• добавляет ограничение целостности
• переопределяет столбец (тип данных, размер, умалчиваемое значение)
• удаляет столбец
• модифицирует характеристики памяти или иные параметры
• включает, выключает или удаляет ограничение целостности или триггер.
Условие: Таблица должна быть в схеме пользователя, или пользователь должен иметь системную привилегиюALTER ANY TABLE.
Добавляя
столбец с ограничением NOT NULL, разработчик или администратор БД
должны учесть ряд обстоятельств. Сначала нужно создать столбец без
ограничения, а затем ввести значения во все его строки. После того как
все значения столбца станут не NULL-значениями, к нему можно применить
ограничение NOT NULL. Если столбец с ограничением NOT NULL пытается
добавить пользователь, возвращается сообщение об ошибке, говорящее о
том, что либо таблица должна быть пустой, либо в столбце должны
содержаться значения для каждой существующей строки (напомним, что после
наложения на столбец ограничения NOT NULL в нем не могут присутствовать
NULL-значения ни в одной из существующих строк). Изменяя типы данных
существующих столбцов или добавляя столбцы в таблицу базы данных, нужно
соблюдать ряд условий. Общепринято, что увеличение – это хорошо, а
уменьшение, как правило, – не очень. Допустимые увеличения:
• Увеличение размера столбца CHAR или VARCHAR2
• Увеличение размера столбца NUMBER
• Добавление новых столбцов в таблицу
Уменьшение
различных характеристик таблицы, в том числе некоторых типов данных
столбцов и реального числа столбцов таблицы, требует особых действий.
Часто перед внесением изменения нужно убедиться в том, что в
соответствующем столбце или столбцах все значения являются
NULL-значениями. Для выполнения подобных операций над столбцами таблицы,
содержащими данные, разработчик должен найти или создать какую-то
область для временного хранения этих данных. Например, создать таблицу с
помощью командыCREATE TABLE AS SELECT, в которой извлекаются данные из
первичного ключа и изменяемого столбца или столбцов. Допустимые
изменения:
• Уменьшение размера столбца NUMBER (только при пустом столбце для всех строк)
• Уменьшение размера столбца CHAR или VARCHAR2 (только при пустом столбце для всех строк)
• Изменение типа данных столбца (только при пустом столбце для всех строк)
Ограничения
целостности столбцов и таблиц БД можно изменять, а также запрещать,
разрешать и удалять. Это дает разработчику возможность создавать,
модифицировать и удалять бизнес-правила, ограничивающие данные.
Для
добавления ограничений целостности можно не указывать имя создаваемого
ограничения с помощью ключевого слова CONSTRAINT. В этом случае команда
будет выглядеть следующим образом:
ALTER TABLE t1 ADD FOREIGN KEY (pole1) REFERENCES t2 (pole1) ;
Существует ряд условий создания ограничений:
• Первичные ключи: в столбцах не могут содержаться NULL-значения, и все значения должны быть уникальны.
•
Внешние ключи: в тех столбцах других таблиц, на которые производятся
ссылки, должны содержаться значения, соответствующие всем значениям
ссылающихся столбцов, либо значения этих последних должны быть
NULL-значениями.
• Ограничения UNIQUE: все значения столбцов должны быть уникальными или NULL-значениями.
•
Ограничения CHECK: новое ограничение будет применяться только по
отношению к данным, добавляемым или модифицируемым после его создания.
• NOT NULL: NULL-значения в столбцах запрещены.
Ограничения
можно разрешать и запрещать. Разрешенное ограничение выполняет свои
функции, реализуя бизнес-правила по отношению к вводимым в таблицу
данным, а запрещенное ограничение переводится в разряд недействующих,
как если бы оно было удалено, и его правила не реализуются.