Ответ
Да, уникальный ключ (unique key) в MySQL может содержать значение NULL. Однако есть нюанс: уникальный ключ допускает несколько записей с NULL, так как NULL не считается равным другому NULL (сравнение NULL = NULL возвращает NULL, а не true).
Пример:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) UNIQUE
);
INSERT INTO users (email) VALUES (NULL); -- OK
INSERT INTO users (email) VALUES (NULL); -- OK, так как NULL != NULL
Если нужно запретить дублирование NULL, можно использовать NOT NULL в сочетании с UNIQUE:
ALTER TABLE users MODIFY email VARCHAR(255) NOT NULL UNIQUE;
В других СУБД (PostgreSQL, SQLite) поведение может отличаться.