Изменение таблиц и ограничений
После создания таблицы может потребоваться изменение ее структуры. Например, вы хотите включить новый столбец, переопределить существующий, отменить или разрешить ограничение.
Добавление столбца.
Синтаксис
ALTER TABLE таблица ADD (столбец тип_данных [DEFAULT выраж] [NOT NULL] [, столбец тип_данных]...); |
---|
где
таблица | Имя таблицы. |
столбец | Имя столбца. |
тип_данных | Тип данных и длина столбца. |
DEFAULT выраж | Определение значения нового столбца по умолчанию |
NOT NULL | Ограничение NOT NULL для нового столбца |
Новый столбец становится в таблице последним.
Пример: Добавление столбца COMMENTS в таблицу S_REGION.
Изменение столбца.
Можно измененить такие параметры столбца, как тип данных, размер, значение по умолчанию, ограничение NOT NULL.
Синтаксис:
ALTER TABLE таблица MODIFY (столбец тип_данных [DEFAULT выраж] [NOT NULL] [,столбец тип_данных]...); |
---|
Примечание: Можно увеличить ширину столбца или точность числовых значений; уменьшить ширину столбца, если столбец содержит неопределенные значения или в таблице нет строк; изменить значения по умолчанию для последующих добавлений. Использовать ограничение NOT NULL можно только в случае, если столбец содержит неопределенные значения. Изменение значения по умолчанию доступно только для тех строк, которые впоследствии будут вставляться в таблицу.
Пример: Увеличение максимальной ширины столбца TITLE таблицы S_EMP до 50 символов.
Добавление ограничения.
С помощью команды ALTER TABLE можно добавить или удалить (но не измененить) ограничения; разрешить или запретить действие ограничения.
Синтаксис
ALTER TABLE таблица ADD|MODIFY ([CONSTRAINT ограничение] тип (столбец); |
---|
Пример: Добавление ограничения FOREIGN KEY для таблицы S_EMP.
Удаление ограничения.
Синтаксис
ALTER TABLE таблица DROP {PRIMARY KEY | UNIQUE (столбец) | CONSTRAINT ограничение [CASCADE]}; |
---|
Пример: Удаление ограничения для менеджеров из таблицы S_EMP.
Пример: Удаление ограничения PRIMARY KEY для таблицы S_DEPT и связанного с ним ограничения FOREIGN KEY для столбца S_EMP.DEPT_ID.
Запрет и разрешение ограничений.
Для запрета ограничения используется предложение DISABLE команды ALTER TABLE. Для одновременного запрета всех зависимых ограничений используется параметр CASCADE.
Синтаксис:
ALTER TABLE таблица DISABLE | ENABLE CONSTRAINT ограничение [CASCADE]; |
---|
Разрешение ограничений.
Разрешение ранее запрещенного ограничения достигается с помощью предложения ENABLE. Разрешение ограничений UNIQUE и PRIMARY KEY вызывает автоматическое создание индексов UNIQUE и PRIMARY KEY.
Примеры:
Синтаксис
DROP TABLE таблица [CASCADE CONSTRAINTS]; |
где
таблица |
Имя таблицы |
CASCADE CONSTRAINTS |
При указании этого параметра будут удалены все зависимые ограничения. |
Команда удаляет все данные из таблицы, все незафиксированные транзакции фиксируются, все индексы удаляются. Откат этой команды невозможен.
Для изменения имени таблицы, представления, последовательности или синонима используется команда RENAME.
Синтаксис:
RENAME имя_1 TO имя_2 |
где
имя_1 |
Старое имя объекта. |
имя_2 |
Новое имя. |
Пример: Таблица S_ORD переименовывается в S_ORDER. При выполнении этой команды Вы должны быть владельцем объекта.
Команда TRUNCATE удаляет все строки таблицы и освобождает память, занятую под таблицу.
Синтаксис:
TRUNCATE TABLE таблица; |
Пример: Удалаются все строки из таблицы S_ITEM, структура таблицы сохраняется.
Примечание: Вернуть удаленные строки после выполнения команды TRUNCATE невозможно. Удалять строки можно и командой DELETE.
Добавление комментариев к таблице
Синтаксис:
COMMENT ON таблица IS ‘текст’; |
где
таблица |
Имя таблицы, для которой добавляется комментарий. |
текст | Текст комментария. |
Пример: Добавляется комментарий к таблице S_EMP.
Для отмены комментария используется пустая строка символов. Увидеть комментарии можно с помощью следующих представлений словаря данных: ALL_COL_COMMENTS, USER_COL_COMMENTS, ALL_TAB_COMMENTS и USER_TAB_COMMENTS.
![]() |
Для закрепления материала можно выполнить Практическое задание 9 |