При работе с таблицами часто возникает проблема, что при планировании не были учтены те или иные требования. Чтобы внести коррективы в структуру таблицы часто ее просто удаляют, и создают новую с уже внесенными изменениями. Но этот способ неудобен, т.к. приходится сохранять данные из таблицы в другой таблице, а затем заново копировать их в вновь созданную. Благодаря команде ALTER TABLE мы можем легко добавлять новые поля или удалять уже имеющиеся, переименовывать саму таблицу, изменять тип данных в том или ином столбце и т.д.
Далее рассмотрим основные операции, которые можно сделать при помощи ALTER TABLE.
Переименование таблицы
Переименование таблицы можно сделать при помощи следующей конструкции:
ALTER TABLE table_name_old RENAME table_name_new где
· table_name_old - старое имя таблицы, которое нам нужно переименовать;
· table_name_new - новое имя таблицы.
Допустим, нам нужно переименовать таблицу search в search_en:
$sql="ALTER TABLE search RENAME search_en";mysql_query($sql);
Вставка столбцов
Вставку нового столбца можно осуществить при помощи следующей конструкции:
ALTER TABLE table_name ADD field_name parametrs где
· table_name - имя таблицы, в которой будет вставлен новый столбец;
· field_name - имя вставляемого столбца;
parametrs - параметры, описывающие вставляемый столбец.
Обязательным параметром является указание типа данных. (Про возможные типы данных подробно написано в Создание и удаление таблицы). Например, нам надо вставить в таблицу my_frends столбец под названием adress_2, который будет содержать текстовые значения:
$sql="ALTER TABLE my_frends ADD adress_2 TEXT";mysql_query($sql); По умолчанию новый столбец вставляется в конец таблицы. Если необходимо, чтобы столбец встал в начало таблицы, нужно после параметров вставляемого столбца написать ключевое слово FIRST:
$sql="ALTER TABLE my_frends ADD adress_2 TEXT FIRST";mysql_query($sql); Теперь только что вставленный столбец окажется вначале таблицы. Если необходимо, чтобы столбец был вставлен не в начале таблицы, и не в конце, а после определенного столбца, то нужно применить ключевое слово AFTER имя столбца, после которого будет установлен новый столбец:
$sql="ALTER TABLE my_frends ADD adress_2 TEXT AFTER adress_1";mysql_query($sql); В этом примере новый столбец adress_2 будет установлен после столбца adress_1. Если нужно дописать к таблице не один, а несколько столбцов, то для каждого столбца нужно ADD field_name parametrs записать через запятую:
$sql="ALTER TABLE my_frends ADD adress_2 TEXT, ADD adress_3 TEXT, ADD adress_4 TEXT";mysql_query($sql); В случае, если надо дописать два столбца внутри таблицы, можно поступить следующим образом:
$sql="ALTER TABLE my_frends ADD adress_2 TEXT AFTER adress_1, ADD adress_3 TEXT AFTER adress_2";mysql_query($sql); Т.е. мы первый вставляемый столбец записываем после adress_1, а второй после первого.
Изменение свойств столбца
Изменить свойства одного или нескольких столбцов можно при помощи следующей конструкции:
ALTER TABLE table_name CHANGE field_name_oldfield_name_new parametrs где
· table_name - имя таблицы, в которой находится изменяемый столбец;
· field_name_old - имя столбца изменяемого столбца;
· field_name_new - новое имя изменяемого столбца (должно равняться field_name_old, если мы не хотим поменять имя столбца);
· parametrs - новые параметры столбца.
В следующем примере установим тип строки field_1 как текст:
$sql="ALTER TABLE my_table CHANGE field_1 field_1 TEXT";mysql_query($sql); А если необходимо при этом еще и переименовать столбец в field_2, то получиться так:
$sql="ALTER TABLE my_table CHANGE field_1 field_2 TEXT";mysql_query($sql); В случае, если надо изменить свойства сразу нескольких столбцов, то конструкцию CHANGE field_name_old field_name_new parametrs повторяем через запятую для каждого столбца:
$sql="ALTER TABLE my_table CHANGE field_1 field_2 TEXT, CHANGE field_3 field_3 TEXT";mysql_query($sql);
Удаление столбцов
Удаление столбца можно сделать при помощи следующей конструкции:
ALTER TABLE table_name DROP field_name где
· table_name - имя таблицы, в которой будет удален столбец;
· field_name - имя удаляемого столбца.
$sql="ALTER TABLE search DROP id_num";mysql_query($sql); Если мы хотим удалить сразу несколько полей, то надо через запятую повторить DROP field_name для каждого столбца:
$sql="ALTER TABLE search DROP id_1, DROP id_2, DROP id_3";mysql_query($sql);