Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MySql.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
467 Кб
Скачать
☆

Внимание

Изменять тип столбца, который уже содержит какие-либо значения, необ­ходимо с осторожностью, так как при этом возможно внесение коррективов в значения. Например, если тип данных с плавающей точкой меняется на целочисленный, числовые значения будут округлены. В этой команде мы указываем имя таблицы, текущее имя столбца, новое имя столбца (которое может совпадать с текущим), новый тип столбца (который также может совпадать с текущим типом), а также, при необходимости, свой­ства столбца (старые свойства при выполнении команды CHANGE удаляют-|ся). Кроме того, можно определить место столбца среди остальных столбцов таблицы: изменяемый столбец может стать первым (FIRST) или следовать после указанного предшествующего столбца (AFTER).

Например, чтобы переименовать столбец store (склад) таблицы Products (Товары) в warehouse (склад) и изменить его тип на CHAR (100), выполните команду

ALTER TABLE Products CHANGE store warehouse CHAR(IOO);

Чтобы присвоить столбцу свойство AUTO_INCREMENT, необходимо либо' одновременно с этим, либо заранее создать индекс для этого столбца.

• Чтобы изменить описание столбца без переименования, выполните команду

ALTER TABLE <Имя таблицы> MODIFY <Имя столбца> <Новый тип столбца> [<Свойства столбца>] [FIRST или AFTER <Имя предшествующего столбца>];

Данная команда полностью аналогична предыдущей, за исключением воз­можности переименования столбца.

• Чтобы установить значение по умолчанию для столбца, выполните команду

ALTER TABLE <Имя таблицы> ALTER <Имя столбца> SET DEFAULT <3начение по умолчанию>;

Например, чтобы установить для столбца warehouse таблицы Products значение по умолчанию Склад № 1, выполните команду

ALTER TABLE Products ALTER warehouse SET DEFAULT 'Склад №Г;

Чтобы удалить значение по умолчанию, выполните команду

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;

3 Удалить внешний ключ вы можете с помощью команды•

ALTER TABLE <Имя таблицы> DROP FOREIGN KEY <Имя внешнего ключа>;

В этой команде необходимо указать имя внешнего ключа. Если вы не задали имя внешнего ключа при его создании, то имя было присвоено автоматически и узнать его можно с помощью команды SHOW CREATE TABLE (см. подраздел «Другие команды для работы с таблицами»).

Например, удалить внешний ключ из таблицы Orders можно с помощью команды

ALTER TABLE Orders DROP FOREIGN KEY orders_ibfk_l;

(здесь orders_ibf k_l — имя внешнего ключа, автоматически присвоенное ему при создании).

3 Удалить индекс (обычный, уникальный или полнотекстовый) вы можете с по­мощью команды

ALTER TABLE <Имя таблицы> DROP INDEX <Имя индексам

В этой команде необходимо указать имя индекса. Если вы не задали имя индекса при его создании, то имя было присвоено автоматически и узнать его можно с помощью команды SHOW CREATE TABLE (см. подраздел «Другие команды для работы с таблицами»).

Например, удалить индекс, созданный для поля name (имя) таблицы Customers (Клиенты), можно с помощью команды

ALTER TABLE Customers DROP INDEX name;

(здесь name — имя индекса: по умолчанию индексу присваивается имя первого индексируемого столбца).

3 Включить и отключить обновление неуникальных индексов в таблице с типом My ISAM вы можете с помощью следующих команд:

• ALTER TABLE <Имя таблицы> DISABLE KEYS;

Эта команда временно отключает обновление неуникальных индексов, что позволяет увеличить быстродействие операций добавления строк в таблицу.

• ALTER TABLE <Имя таблицы> ENABLE KEYS;

Эта команда позволяет восстановить индексы после добавления строк. 3 Переименовать таблицу вы можете с помощью команды

-LTER TABLE <Имя таблицы> RENAME <Новое имя таблицы>;

□ Упорядочить строки таблицы по значениям одного или нескольких столбцов вы можете с помощью команды

ALTER TABLE <Имя таблицы> ORDER BY <Имя столбца 1> [ASC или DESC], [<Имя столбца 2> [ASC или DESC],...];

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

По умолчанию строки таблицы упорядочиваются по возрастанию значений. Вы можете выбрать направление сортировки, указав ключевое слово ASC (по возрастанию) или DESC (по убыванию).

Для таблиц с типом InnoDB, в которых есть первичный ключ или уникальный индекс, не допускающий неопределенных значений (NOT NULL UNIQUE), эта команда игнорируется, поскольку строки таких таблиц автоматически упоря­дочиваются по значениям этого ключа/индекса.

□ Задать опциональные свойства таблицы (см. пункт «Опциональные свойства таблицы») вы можете с помощью команды

ALTER TABLE <Имя таблицы> Опциональное свойство таблицы>; Например, изменить тип таблицы можно с помощью команды

ALTER TABLE <Имя таблицы> ENGINE <Новый тип таблицы>;

□ Изменить кодировку и правило сравнения символьных значений, используе­ мых по умолчанию для новых символьных столбцов таблицы, можно, как любое другое опциональное свойство таблицы, с помощью команды

ALTER TABLE <Имя таблицы> CHARACTER SET <Имя кодировки> [COLLATE <Имя правила сравнения>];

Например, если для таблицы Products (Товары) требуется установить в ка­честве кодировки по умолчанию кодировку СР-1251, это можно сделать с по­мощью команды

ALTER TABLE Products CHARACTER SET cpl251;

После выполнения этой команды существующие столбцы таблицы Products по-прежнему будут иметь кодировку UTF-8. Если же с помощью команды ALTER TABLE будут добавляться новые символьные столбцы, то им будет по умолчанию присваиваться кодировка СР-1251.

Если вы хотите не только изменить кодировку, используемую по умолчанию для новых столбцов, но и преобразовать в новую кодировку существующие символьные столбцы таблицы, то нужно использовать команду

ALTER TABLE <Имя таблицы>

CONVERT TO CHARACTER SET <Имя кодировка [COLLATE <Имя правила сравнения>];

При выполнении этой команды не просто меняются описания символьных столбцов: данные в этих столбцах также преобразуются в новую кодировку.

Например, после выполнения команды

ALTER TABLE Products CONVERT TO CHARACTER SET cpl251;

все наименования и описания товаров (значения столбцов description и details) преобразуются в кодировку СР-1251.

Если же данные в столбце фактически закодированы с помощью одной коди­ровки, а в описании столбца указана другая кодировка, исправить эту ошибку можно, изменив кодировку только в описании столбца, без преобразования данных. Это можно сделать, преобразовав тип столбца из символьного в би­нарный (то есть тип CHAR преобразовать в тип BINARY, тип VARCHAR — в тип VARBINARY, тип TEXT — в тип BLOB и т. п.), а затем обратно в символьный, уже в правильной кодировке. Для этого выполним последовательно две команды:

ALTER TABLE <Имя таблицы>

CHANGE <Имя столбца> <Имя столбца> <Бинарный тип данных>; ALTER TABLE <Имя таблицы>

CHANGE <Имя столбца> <Имя столбца> <Исходный тип данных>

CHARACTER SET Фактическая кодировка значений^;

Например, если для столбца details таблицы Products установлен тип TEXT и кодировка UTF-8, а данные в нем фактически находятся в кодировке СР-1251, приведем описание столбца в соответствие с реальной кодировкой с помощью команд

ALTER TABLE Products CHANGE details details BLOB: ALTER TABLE Products CHANGE details details TEXT CHARACTER SET cpl251:

Итак, вы изучили команду изменения таблицы. В следующем подразделе рас­смотрим еще несколько полезных команд работы с таблицами.