После того, как таблицы базы данных созданы, заполнены и введены в эксплуатацию, может встать вопрос об изменении их структуры с целью оптимизации работы базы данных и использующих ее приложений. Наиболее распространенные задачи изменения структуры таблицы включают изменение порядка следования столбцов, их названий, типов, добавление новых индексов и т. д. Все эти операции производятся при помощи оператора SQL alter table, которому посвящена данная глава.
Оператор alter table имеет следующий синтаксис
Сразу после оператора alter table следует имя таблицы tbl, которая подвергается изменению, и производимое изменение alter_specification, которых может быть несколько. Более подробное описание оператора производится в соответствующих разделах данной главы.
Для добавления столбца используется форма оператора alter table - add [column], представленная в листинге 10.1, где в таблицу products (см. листинг 4.25) учебной базы данных shop добавляется целочисленный столбец rebate, в который можно поместить скидку на товар в процентах.
Удаление столбца производится при помощи оператора alter table - drop [column]. В листинге 10.2 демонстрируется удаление вновь созданного столбца rebate.
Как видно из листинга 10.1, новый столбец rebate был добавлен в конец таблицы. Для того чтобы изменить позицию, в которую будет помешен столбец, совместно с alter table - add [column] используются ключевые слова first и after. Ключевое слово first требует, чтобы новый столбец был размещен первым, a after позволяет указать, после какого столбца следует поместить новый. В листинге 10.3 демонстрируется добавление столбца id_first в начало таблицы и столбца rebate после price.
Помимо ввода в таблицу новых столбцов, часто встает задача изменения типа или названия уже существующего столбца. Для изменения типа уже существующего столбца используется ключевое слово modify, после которого указывается имя модифицируемого столбца и его новый тип. В листинге 10.4 целочисленный тип столбца Ld_first, добавленного в листинге 10.3, меняется на текстовый.
Точно так же, как и при создании столбца, использование ключевых слов first и after позволяет изменить порядок следования столбцов. В листинге 10.5 столбцы id first и rebate меняются местами
Как и в случае modify, совместно с ключевым словом change допускается использование ключевых слов first и after, позволяющих изменить позицию столбца. Если при помощи change изменяется только тип столбца, но не его имя, название столбца записывается в операторе alter table два раза. В листинге 10.7 решается задача смены типа столбца id_second с text на int, а типа столбца rebate с int на text, при этом столбцы размещаются в конце таблицы.