Ограничение 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.