Гольцман Виктор
Шрифт:
ALTER TABLE <Имя таблицы> <Опциональное свойство таблицы>;
Например, изменить тип таблицы можно с помощью команды
ALTER TABLE <Имя таблицы> ENGINE <Новый тип таблицы>;
• Изменить кодировку и правило сравнения символьных значений, используемых по умолчанию для новых символьных столбцов таблицы, можно, как любое другое опциональное свойство таблицы, с помощью команды
ALTER TABLE <Имя таблицы>
CHARACTER SET <Имя кодировки>
[COLLATE <Имя правила сравнения>];Например, если для таблицы Products (Товары) требуется установить в качестве кодировки по умолчанию кодировку CP-1251, это можно сделать с помощью команды
ALTER TABLE Products CHARACTER SET cp1251;
После выполнения этой команды существующие столбцы таблицы Products по-прежнему будут иметь кодировку UTF-8. Если же с помощью команды ALTER TABLE будут добавляться новые символьные столбцы, то им будет по умолчанию присваиваться кодировка CP-1251. Если вы хотите не только изменить кодировку, используемую по умолчанию для новых столбцов, но и преобразовать в новую кодировку существующие символьные столбцы таблицы, то нужно использовать команду
ALTER TABLE <Имя таблицы>
CONVERT TO CHARACTER SET <Имя кодировки>
[COLLATE <Имя правила сравнения>];При выполнении этой команды не просто меняются описания символьных столбцов: данные в этих столбцах также преобразуются в новую кодировку. Например, после выполнения команды
ALTER TABLE Products CONVERT TO CHARACTER SET cp1251;
все наименования и описания товаров (значения столбцов description и details) преобразуются в кодировку CP-1251. Если же данные в столбце фактически закодированы с помощью одной кодировки, а в описании столбца указана другая кодировка, исправить эту ошибку можно, изменив кодировку только в описании столбца, без преобразования данных. Это можно сделать, преобразовав тип столбца из символьного в бинарный (то есть тип CHAR преобразовать в тип BINARY, тип VARCHAR – в тип VARBINARY, тип TEXT – в тип BLOB и т. п.), а затем обратно в символьный, уже в правильной кодировке. Для этого выполним последовательно две команды:
ALTER TABLE <Имя таблицы>
CHANGE <Имя столбца> <Имя столбца> <Бинарный тип данных>;
ALTER TABLE <Имя таблицы>
CHANGE <Имя столбца> <Имя столбца> <Исходный тип данных>
CHARACTER SET <Фактическая кодировка значений>;Например, если для столбца details таблицы Products установлен тип TEXT и кодировка UTF-8, а данные в нем фактически находятся в кодировке CP-1251, приведем описание столбца в соответствие с реальной кодировкой с помощью команд
ALTER TABLE Products CHANGE details details BLOB;
ALTER TABLE Products
CHANGE details details TEXT CHARACTER SET cp1251;Итак, вы изучили команду изменения таблицы. В следующем подразделе рассмотрим еще несколько полезных команд работы с таблицами.
Другие команды для работы с таблицами
В этом подразделе мы познакомимся с командами получения информации о таблицах, а также с командой удаления таблицы.
Получить детальную информацию о конкретной таблице вы можете с помощью командыDESCRIBE <Имя таблицы>;
или
SHOW CREATE TABLE <Имя таблицы>;
Эти команды вы можете использовать, чтобы, например, узнать имена и порядок следования столбцов таблицы, проверить правильность изменений, внесенных в структуру таблицы с помощью команды ALTER TABLE и т. п. Команда DESCRIBE выводит информацию о столбцах таблицы. Например, чтобы получить информацию о столбцах таблицы Customers (Клиенты), выполним команду
DESCRIBE Customers;
Примечание
Во всех клиентских приложениях, подключенных к серверу MySQL, в результате выполнения одной и той же команды отображаются одни и те же данные. Однако окна разных клиентских приложений выглядят по-разному (сравним, например, рис. 2.2 и рис. 2.4). Поэтому здесь и далее мы будем приводить не изображение окна, а только сами данные, выводимые командой.
Результат выполнения этой команды представлен в табл. 2.1.
Таблица 2.1.
Результат выполнения команды DESCRIBE Customers;
Для каждого столбца таблицы команда DESCRIBE отображает следующие характеристики:
• Field – имя столбца;
• Type – тип столбца;
• Null – указывает, допускает ли столбец неопределенные значения (NULL): YES – допускает, NO – не допускает;
• Key – показывает вхождение столбца в ключи и индексы:
– PRI – столбец входит в первичный ключ или, если в таблице нет первичного ключа, в уникальный индекс, не допускающий неопределенных значений;