Задание этого свойства для таблицы, в которой есть столбец со свойством AUTO_INCREMENT, позволяет начать нумерацию в этом столбце не с единицы, а с указанного вами значения. Например, если номера заказов должны начинаться с 1000, нужно в команду создания таблицы Orders (см. листинг 2.4) включить параметр AUTO_INCREMENT 1000.
• CHARACTER SET <Имя кодировки>.
Данный параметр определяет кодировку по умолчанию для символьных столбцов таблицы.
Все таблицы нашего примера (см. листинги 2.2–2.4) были созданы с параметром CHARACTER SET utf8. Поэтому все данные о клиентах и товарах будут храниться в этой кодировке.
Если не задана кодировка для таблицы, то по умолчанию используется кодировка, установленная для базы данных. Если и для базы данных кодировка не была указана, то используется кодировка, установленная по умолчанию при настройке MySQL. Подробнее о кодировках и правилах сравнения символьных значений было сказано в разделе "Создание базы данных".
• COLLATE <Имя правила сравнения>.
Данный параметр определяет правило сравнения значений, используемое по умолчанию для символьных столбцов таблицы.
Если не задано правило сравнения для таблицы, то по умолчанию используется правило, установленное для базы данных.
• CHECKSUM 1.
Данный параметр включает проверку контрольной суммы для строк таблицы типа MyISAM, что позволяет быстро обнаруживать поврежденные таблицы.
• COMMENT \'Текст комментария\'.
Произвольное текстовое описание таблицы длиной до 60 символов. Например, описание для таблицы Customers (Клиенты) можно задать, включив в команду создания таблицы параметр
COMMENT \'Сведения о клиентах\'
Прочие опциональные параметры таблицы либо используются в целях оптимизации (об оптимизации пойдет речь в главе 6), либо относятся к типам таблиц, которые в данной книге не рассматриваются. На этом мы завершаем изучение команды создания таблицы – CREATE TABLE. В следующем подразделе мы рассмотрим команду, с помощью которой можно изменить структуру уже существующей таблицы.
Изменение структуры таблицы
В этом подразделе будет описано, как изменить те параметры таблицы, которые мы обсуждали в предыдущем подразделе. Для модификации ранее созданной таблицы используется команда ALTER TABLE. Задавая различные параметры этой команды, вы можете внести в таблицу следующие изменения.
• Добавить столбец вы можете с помощью команды
ALTER TABLE <Имя таблицы>
ADD <Имя столбца> <Тип столбца> [<Свойства столбца>]
[FIRST или AFTER <Имя предшествующего столбца>];
В этой команде мы указываем имя таблицы, в которую добавляется столбец, а также имя и тип добавляемого столбца (о типах столбцов см. пункт "Типы данных в 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 <Имя предшествующего столбца>];