4. Значение по умолчанию
При определении поля таблицы можно указать значение по умолчанию, используя ключевое слово DEFAULT и выражение для этого значения; в выражении можно использовать функции, но нельзя использовать другие поля этой записи и подзапросы. Отметим, что при отсутствии ключевого слова DEFAULT значением по умолчанию считается значение NULL. В командах INSERT, если значение поля добавляемой записи отсутствует, значение поля устанавливается в соответствии со значением вычисленного выражения; при необходимости в команде INSERT можно явно указать другое значение.
Поле, для которого определено значение по умолчанию, может быть в команде INSERT инициализировано любым другим значением.
5. Изменение определения таблицы
Для изменения определения таблицы предназначена команда ALTER TABLE. С ее помощью можно выполнить следующие основные действия:
изменение имени таблицы;
изменение имени существующего поля;
добавление нового поля;
удаление существующего поля;
изменение типа существующего поля;
изменение выражение для виртуального поля;
создание нового ограничения;
удаление существующего ограничения;
изменение имени существующего ограничения;
отключение и включение действия ограничений;
изменение физических параметров размещения таблицы и т.д.
Работа с командой ALTER TABLE обладает рядом особенностей. Прежде всего, следует иметь в виду, что эти команды могут исполняться после того как таблицы создана и заполнена данными (собственно, для этой цели эта команда и предназначена). Поэтому изменение структуры существующей таблицы влияет на данные в строках. Попытки выполнения команд ALTER TABLE могут привести, прежде всего, к полной или частичной потере существующих данных, а с другой стороны – к невозможности выполнить эти изменения по различным причинам ввиду наличия данных.
6. Удаление таблиц
Для удаления SQL-таблиц используется команда DROP TABLE.
При удалении таблицы происходят следующие действия:
удаляются все строки таблицы;
из системного каталога удаляется определение таблицы;
Удаляются все связанные с этой таблицей объекты, а именно: ограничения, индексы и триггеры.
Кроме того, из системного словаря удаляются все настройки прав доступа пользователей на удаленную таблицу.
Таким образом, удаление таблицы при помощи команды DROP TABLE является в значительной степени радикальной мерой, к которой следует прибегать, принимая во внимание ее последствия.
Таблица по умолчанию не может быть удалена, если ее поля использованы в существующих ограничениях FOREIGN KEY других таблиц. Для игнорирования данного правила следует использовать следующий вариант команды:
DROP TABLE "Клиент(кп)" CASCADE CONSTRAINTS
Интересным вопросом является, что же происходит с данными после удаления таблицы. В ранних версиях Oracle удаление таблицы было необратимым действием; единственным способом восстановления данных было восстановление базы данных с резервных копий. В современной системе поддерживается понятие корзины, в которую помещаются удаленные объекты базы данных и из которой эти объекты можно при необходимости восстановить.
FLASHBACK TABLE ToDrop TO BEFORE DROP
- восстановаление таблицы из корзины, однако индекс востановлен не будет. Теперь корзина пуста, а таблица восстановлена и может использоваться в запросах; индекс же необходимо создать заново.
Если необходимо удалить таблицу без помещения ее предварительно в корзину, следует использовать следующий вариант:
DROP TABLE ToDrop PURGE
Для очистки корзины можно вопользоваться командой PURGE RECYCLEBIN.
Команда FLASHBACK TABLE может использоваться и для восстновления таблицы к состоянию в некотрый момент времени. Однако восстновление объектов из корзины возможно не всегда; это связано с подробностями настройки сервера. Для более детального и полного описания работы с корзиной следует обращаться к документации.