Обмеження UNIQUE означає, що стовпець повинен мати унікальні значення. Наприклад:
|
1 2 3 4 5 |
CREATE TABLE Colleges ( college_id INT NOT NULL UNIQUE, college_code VARCHAR(20) UNIQUE, college_name VARCHAR(50) ); |
Тут значення стовпця college_code повинні бути унікальними. Так само значення college_id повинні бути унікальними, ще й без значень NULL (обмеження NOT NULL).
UNIQUE проти DISTINCT в SQL
Обмеження UNIQUE використовується, щоб зробити значення стовпця унікальним. Однак, щоб вибрати унікальні рядки із таблиці, слід використовувати SELECT DISTINCT. Наприклад:
|
1 2 |
SELECT DISTINCT country FROM Customers; |
Тут ми вибираємо унікальні значення стовпця country з таблиці Customers.

Рахуємо унікальні рядки
Якщо потрібно підрахувати кількість унікальних рядків, слід використовувати функцію COUNT() з SELECT DISTINCT. Наприклад:
|
1 2 |
SELECT COUNT(DISTINCT country) FROM Customers; |
Тут ми повертаємо кількість унікальних країн (country).

Обмеження UNIQUE з оператором ALTER TABLE
Ми також можемо додати обмеження UNIQUE до існуючого стовпця за допомогою команди ALTER TABLE. Наприклад:
Для одного стовпця
|
1 2 |
ALTER TABLE Colleges ADD UNIQUE (college_id); |
Для декількох стовпців
|
1 2 |
ALTER TABLE Colleges ADD UNIQUE UniqueCollege (college_id, college_code); |
Тут ми додаємо обмеження UNIQUE до вказаних стовпців у існуючій таблиці.
Помилка при вставці повторюваних значень
Якщо ми спробуємо вставити повторювані значення в стовпець з обмеженням UNIQUE, то отримаємо помилку.
|
1 2 3 4 5 6 7 8 9 |
CREATE TABLE Colleges ( college_id INT NOT NULL UNIQUE, college_code VARCHAR(20) UNIQUE, college_name VARCHAR(50) ); -- Вставляємо значення в таблицю Colleges INSERT INTO Colleges(college_id, college_code, college_name) VALUES (1, "ARD12", "Star Public School"), (2, "ARD12", "Galaxy School"); |
Тут ми намагаємося вставити значення ARD12 у стовпець college_code у двох різних рядках. Оскільки це призведе до дублювання значень, а стовпець college_code має обмеження UNIQUE, ми отримаємо помилку.
CREATE UNIQUE INDEX
Якщо потрібно створити індекси для унікальних значень у стовпці, слід використовувати обмеження CREATE UNIQUE INDEX. Наприклад:
|
1 2 |
CREATE UNIQUE INDEX college_index ON Colleges(college_code); |
Тут ми створюємо унікальний індекс з ім’ям college_index у таблиці Colleges, використовуючи стовпець college_code.
