Уникальные записи (индекс UNIQUE)

В MySQL можно создавать поля с уникальными значениями (т.е. одно и тоже значение не будет повторяться в разных записях). Для этого используется индекс UNIQUE.

Код ниже делает в таблице «users» уникальным поле «email».

ALTER TABLE users ADD UNIQUE(email)

Также уникальный индекс можно создать через PHPMyAdmin, как показано на картинке ниже:

PHPMyADmin Unique

Перед тем, как создавать уникальный индекс, сначала надо проверить, что для данного поля нет индекса UNIQUE (иначе будет повторно создан уникальный индекс). Это можно проверить через команду SHOW INDEXES.

SHOW INDEXES FROM users WHERE Column_name='email' AND NOT Non_unique

При попытке указать уже существующее значение, MySQL вернёт ошибку «#1062 - Дублирующаяся запись по ключу 'email'».

Если у поля задан индекс PRIMARY KEY, то она автоматически становится уникальной.

Уникальный индекс из нескольких полей

В уникальный индекс можно добавить несколько полей, например user_id и property_id.

/* 1-ый способ (имя индекса задаётся автоматически) */
ALTER TABLE users_properties ADD UNIQUE(user_id, property_id)

/* 2-ой способ (имя индекса задаётся вручную) */
ALTER TABLE users_properties ADD CONSTRAINT IndexName UNIQUE(user_id, property_id)

Теперь в «property_id» могут быть одинаковые значения, но при условии, если в каждой записи будет разный «user_id».

Удалить уникальный индекс

Уникальный индекс удаляется как и любой индекс.

ALTER TABLE users DROP INDEX IndexName