Виктор Гольцман - MySQL 5.0. Библиотека программиста
В этой команде мы указываем имя таблицы, в которую добавляется столбец, а также имя и тип добавляемого столбца (о типах столбцов см. пункт «Типы данных в MySQL»). При необходимости можно также задать свойства добавляемого столбца (см. пункт «Свойства столбцов»). Кроме того, можно определить место нового столбца среди уже существующих: добавляемый столбец может стать первым (FIRST) или следовать после указанного предшествующего столбца (AFTER). Если место столбца не задано, он становится последним столбцом таблицы. Например, чтобы добавить в таблицу Products (Товары) столбец store (название склада, где хранится каждый вид товара), выполните команду
ALTER TABLE Products ADD store VARCHAR(100) AFTER details;
...Примечание
Добавить столбец со свойством AUTO_INCREMENT можно только с одновременным созданием индекса или ключа для этого столбца. Например, если бы столбец id не был включен в таблицу Products (Товары) при ее создании, мы могли бы добавить его с помощью команды
ALTER TABLE Products
ADD id BIGINT AUTO_INCREMENT, ADD PRIMARY KEY (id);
• Добавить первичный ключ вы можете с помощью команды
ALTER TABLE <Имя таблицы>
ADD [CONSTRAINT <Имя ключа>]
PRIMARY KEY (<Список столбцов>);При добавлении в таблицу первичного ключа мы указываем имя таблицы, в которую нужно добавить ключ, и имена столбцов, которые будут образовывать первичный ключ (эти столбцы должны уже существовать в таблице). Более подробно о первичных ключах было сказано в пункте «Ключевые столбцы и индексы». Например, если бы первичный ключ не был определен при создании таблицы Orders (Заказы), мы могли бы добавить его с помощью команды
ALTER TABLE Orders ADD PRIMARY KEY (id);
• Добавить внешний ключ вы можете с помощью команды
ALTER TABLE <Имя таблицы>
ADD [CONSTRAINT <Имя внешнего ключа>]
FOREIGN KEY [<Имя индекса>] (<Список столбцов>)
REFERENCES <Имя родительской таблицы>
(<Список столбцов первичного ключа родительской таблицы>)
[<Правила поддержания целостности связи>];При добавлении в таблицу внешнего ключа мы указываем имя таблицы, в которую нужно добавить ключ, имена столбцов, которые будут образовывать внешний ключ (эти столбцы должны уже существовать в таблице), а также имя родительской таблицы (на которую будет ссылаться данная таблица) и имена столбцов, образующих первичный ключ в родительской таблице. В случае необходимости можно также задать имя создаваемого внешнего ключа, имя индекса, автоматически добавляемого для столбцов внешнего ключа, и правила поддержания целостности связи при удалении и изменении строк родительской таблицы. Например, если бы внешний ключ не был определен при создании таблицы Orders (Заказы), мы могли бы добавить его с помощью команды
ALTER TABLE Orders
ADD FOREIGN KEY (customer_id) REFERENCES Customers (id)
ON DELETE RESTRICT ON UPDATE CASCADE);Более подробно о внешних ключах говорилось в пункте «Ключевые столбцы и индексы». • Добавить в таблицу обычный индекс вы можете с помощью команды
ALTER TABLE <Имя таблицы> ADD INDEX [<Имя индекса>] (<Список столбцов>);
Добавить уникальный индекс – с помощью команды
ALTER TABLE <Имя таблицы>
ADD [CONSTRAINT <Имя ограничения>]
UNIQUE (<Список столбцов>);Добавить полнотекстовый индекс – с помощью команды ALTER TABLE <Имя таблицы>
ALTER TABLE <Имя таблицы> ADD FULLTEXT [<Имя индекса>] (<Список столбцов>);
При добавлении в таблицу индекса мы указываем имя таблицы, в которую нужно добавить индекс, и имена столбцов, включенных в индекс. В случае необходимости можно также задать имя индекса. Более подробно об индексах было сказано в пункте «Ключевые столбцы и индексы». Например, добавить индекс для столбца store (склад) таблицы Products (Товары) можно с помощью команды
ALTER TABLE Products ADD INDEX (store);
• Изменить столбец таблицы вы можете с помощью следующих команд: – Чтобы полностью изменить описание столбца, выполните команду
ALTER TABLE <Имя таблицы>
CHANGE <Прежнее имя столбца >
<Новое имя столбца>
<Новый тип столбца> [<Свойства столбца>]
[FIRST или AFTER <Имя предшествующего столбца>]; ...Внимание!
Изменять тип столбца, который уже содержит какие-либо значения, необходимо с осторожностью, так как при этом возможно внесение коррективов в значения. Например, если тип данных с плавающей точкой меняется на целочисленный, числовые значения будут округлены.
В этой команде мы указываем имя таблицы, текущее имя столбца, новое имя столбца (которое может совпадать с текущим), новый тип столбца (который также может совпадать с текущим типом), а также, при необходимости, свойства столбца (старые свойства при выполнении команды CHANGE удаляются). Кроме того, можно определить место столбца среди остальных столбцов таблицы: изменяемый столбец может стать первым (FIRST) или следовать после указанного предшествующего столбца (AFTER).
Например, чтобы переименовать столбец store (склад) таблицы Products (Товары) в warehouse (склад) и изменить его тип на CHAR(100), выполните команду
ALTER TABLE Products CHANGE store warehouse CHAR(100);
Чтобы присвоить столбцу свойство AUTO_INCREMENT, необходимо либо одновременно с этим, либо заранее создать индекс для этого столбца. – Чтобы изменить описание столбца без переименования, выполните команду
ALTER TABLE <Имя таблицы>
MODIFY <Имя столбца>
<Новый тип столбца> [<Свойства столбца>]
[FIRST или AFTER <Имя предшествующего столбца>];Данная команда полностью аналогична предыдущей, за исключением возможности переименования столбца. – Чтобы установить значение по умолчанию для столбца, выполните команду
ALTER TABLE <Имя таблицы>
ALTER <Имя столбца>
SET DEFAULT <Значение по умолчанию>;Например, чтобы установить для столбца warehouse таблицы Products значение по умолчанию Склад № 1, выполните команду
ALTER TABLE Products ALTER warehouse SET DEFAULT 'Склад № 1
Чтобы удалить значение по умолчанию, выполните команду
ALTER TABLE <Имя таблицы>
ALTER <Имя столбца> DROP DEFAULT;Например, удалить значение по умолчанию, установленное для столбца warehouse, можно с помощью команды
ALTER TABLE Products ALTER warehouse DROP DEFAULT;
• Удалить столбец таблицы вы можете с помощью команды
ALTER TABLE <Имя таблицы> DROP <Имя столбца>;
При удалении столбца он удаляется также из всех индексов, в которые он был включен (в отличие от первичного и внешнего ключа, которые требуется удалить прежде, чем удалять входящие в них столбцы). Если при этом в индексе не остается столбцов, то индекс также автоматически удаляется. Например, для удаления столбца warehouse (склад) из таблицы Products (Товары) выполните команду
ALTER TABLE Products DROP warehouse;
• Удалить первичный ключ вы можете с помощью команды
ALTER TABLE <Имя таблицы> DROP PRIMARY KEY;
Например, удалить первичный ключ из таблицы Orders (Заказы) можно с помощью команды
ALTER TABLE Orders DROP PRIMARY KEY;
• Удалить внешний ключ вы можете с помощью команды
ALTER TABLE <Имя таблицы> DROP FOREIGN KEY <Имя внешнего ключа>;
В этой команде необходимо указать имя внешнего ключа. Если вы не задали имя внешнего ключа при его создании, то имя было присвоено автоматически и узнать его можно с помощью команды SHOW CREATE TABLE (см. подраздел «Другие команды для работы с таблицами»). Например, удалить внешний ключ из таблицы Orders можно с помощью команды
ALTER TABLE Orders DROP FOREIGN KEY orders_ibfk_1;
(здесь orders_ibfk_1 – имя внешнего ключа, автоматически присвоенное ему при создании). • Удалить индекс (обычный, уникальный или полнотекстовый) вы можете с помощью команды
ALTER TABLE <Имя таблицы> DROP INDEX <Имя индекса>;
В этой команде необходимо указать имя индекса. Если вы не задали имя индекса при его создании, то имя было присвоено автоматически и узнать его можно с помощью команды SHOW CREATE TABLE (см. подраздел «Другие команды для работы с таблицами»). Например, удалить индекс, созданный для поля name (имя) таблицы Customers (Клиенты), можно с помощью команды
ALTER TABLE Customers DROP INDEX name;
(здесь name – имя индекса: по умолчанию индексу присваивается имя первого индексируемого столбца). • Включить и отключить обновление неуникальных индексов в таблице с типом MyISAM вы можете с помощью следующих команд:
ALTER TABLE <Имя таблицы> DISABLE KEYS;
Эта команда временно отключает обновление неуникальных индексов, что позволяет увеличить быстродействие операций добавления строк в таблицу.
ALTER TABLE <Имя таблицы> ENABLE KEYS;
Эта команда позволяет восстановить индексы после добавления строк. • Переименовать таблицу вы можете с помощью команды