MySQL 5.0. Библиотека программиста. Виктор Гольцман
синоним – слово KEY.
[CONSTRAINT <Имя ограничения>] UNIQUE [<Имя индекса>] (<Список столбцов>)
Создает уникальный индекс для указанных столбцов. Уникальный индекс отличается от обычного наличием дополнительного ограничения: наборы значений в столбцах, включенных в уникальный индекс, должны быть различны. Иными словами, в таблице не должно быть строк, у которых значения во всех этих столбцах совпадают. Исключение составляют неопределенные значения (NULL): индекс может содержать два (и более) одинаковых набора значений, если хотя бы одно из значений в этих наборах – NULL. Например, ограничение
UNIQUE (address.phone)
запрещает добавлять в таблицу Customers (Клиенты) две строки, в которых и адрес, и номер телефона определены и совпадают, но разрешает добавлять строки, в которых адрес совпадает, а номер телефона не определен (то есть столбец phone в обеих строках содержит значение NULL), а также строки, в которых и адрес, и номер телефона не определены.
Для столбцов с типом TINYBLOB, TINYTEXT, BLOB, TEXT, MEDIUMBLOB, MEDIUMTEXT, LONGBLOB и LONGTEXT необходимо указать количество символов в начале значения столбца, по которым будет проведено индексирование.
Имя ограничения и имя индекса указывать не обязательно. Если ни имя ограничения, ни имя индекса не указаны, имя индекса присваивается программой автоматически.
Вместо ключевого слова UNIQUE можно использовать его синонимы – выражения UNIQUE INDEX или UNIQUE KEY.
• FULLTEXT [<Имя индекса>] (<Список столбцов>).
Создает полнотекстовый индекс для указанных столбцов. Полнотекстовый индекс обеспечивает ускоренный поиск по значениям символьных столбцов (типы CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT) независимо от длины значений. Такой индекс подобен предметному указателю в книге: он представляет собой список всех слов, встречающихся в значениях столбцов, со ссылками на те значения, в которых каждое слово содержится.
Полнотекстовый индекс можно создать только в таблицах c типом MyISAM (см. пункт «Опциональные свойства таблицы»). Для поиска с использованием полнотекстового индекса предназначен оператор MATCH… AGAINST, о котором будет идти речь в главе 3.
Имя индекса указывать не обязательно. Если вы не зададите имя индекса, оно сгенерируется автоматически.
Вместо ключевого слова FULLTEXT можно использовать его синонимы – выражения FULLTEXT INDEX или FULLTEXT KEY.
• SPATIAL [<Имя индекса>] (<Список столбцов>).
Создает индекс для поиска по пространственным и географическим значениям, которые остаются за рамками нашего рассмотрения.
• [CONSTRAINT <Имя внешнего ключа>].
FOREIGN KEY [<Имя индекса>] (<Список столбцов>)
REFERENCES <Имя родительской таблицы>
(<Список столбцов первичного ключа родительской таблицы>)
[<Правила поддержания целостности связи>]
Определяет внешний ключ таблицы (внешние ключи мы рассматривали в главе 1). Настроив внешний ключ, мы тем самым создадим связь между данной (дочерней) таблицей и родительской таблицей. Внешние ключи поддерживаются только для таблиц c типом InnoDB (причем и дочерняя, и родительская таблица должны иметь тип InnoDB), для остальных типов таблиц выражение FOREIGN KEY игнорируется.
Столбцы, составляющие