Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Создание таблиц

Обновление таблиц

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

     •     В идеальном случае структура таблицы вообще не должна меняться после того, как в таблицу введены данные. Вам придется потратить немало времени, пытаясь предугадать будущие потребности в процессе разработки таблиц, чтобы позже не потребовалось вносить в их структуру существенные изменения.
     •     Все СУБД позволяют добавлять в уже существующие таблицы столбцы, но некоторые ограничивают типы данных, которые могут быть добавлены (а заодно и использование значений NULL и DEFAULT).
     •     Многие СУБД не позволяют удалять или изменять столбцы в таблице.
     •     Большинство   СУБД   разрешают   переименовывать столбцы.
     •     Многие СУБД налагают серьезные ограничения на изменения, которые могут быть сделаны по отношению к заполненным столбцам, и несколько меньшие — по отношению к незаполненным.

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

     Чтобы изменить таблицу посредством оператора ALTER TABLE, нужно ввести следующую информацию.

     •     Имя таблицы, подлежащей изменению, после ключевых слов ALTER TABLE. (Таблица с таким именем должна существовать, иначе будет выдано сообщение
об ошибке.)
     •     Список изменений, которые должны быть сделаны. Поскольку добавление столбцов в таблицу — единственная   операция,   поддерживаемая   всеми   СУБД, именно ее мы рассмотрим в качестве примера.

ALTER TABLE Vendors
ADD vend_phone CHAR(20);

     Посредством этого оператора в таблицу Vendors добавляется столбец, названный vend_phone. Должен быть определен тип данных.

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

ALTER TABLE Vendors DROP COLUMN vend_phone;

Сложные изменения структуры таблицы обычно выполняются вручную и включают следующие шаги.

     •     Создание новой таблицы  с новым расположением столбцов.
     •     Использование    оператора    INSERT SELECT (раздел - "Добавление данных," в котором подробно рассмотрены вопросы применения этого оператора) для копирования данных из старой таблицы в новую. При необходимости используются функции преобразования и вычисляемые поля.
     •     Проверка того факта, что новая таблица содержит нужные данные.
     •     Переименование старой таблицы (или удаление ее).
     •     Присвоение новой таблице имени, которое ранее принадлежало старой таблице.
     •     Восстановление триггеров, хранимых процедур, индексов и внешних ключей, если это необходимо.


Аккуратно используйте оператор ALTER TABLE

Оператор alter table следует использовать с особой осторожностью. Прежде чем приступить к его использованию, удостоверьтесь в том, что у вас есть полный комплект резервных копий (и схемы, и данных). Внесение изменений в базу данных нельзя оставить незавершенным. Если вы добавляете в нее ненужные вам столбцы, у вас нет возможности их удалить. Аналогично, если вы удаляете столбец, который вам на самом деле нужен, могут быть потеряны все данные, в нем содержавшиеся.