Unique SQL: применение уникальных ограничений в SQL запросах

SQL уникальные ограничения - мощный инструмент для поддержания целостности данных в базах данных. Давайте разберемся, как применять их на практике.

Основы unique constraint в SQL

Unique constraint (уникальное ограничение) в SQL - это правило, применяемое к столбцу или группе столбцов таблицы, которое гарантирует уникальность значений в этих столбцах.

Определение и назначение

Главная цель unique constraint - не допустить повторений одинаковых данных в выбранных столбцах таблицы. Это позволяет сохранить целостность базы данных и избежать дублирования и противоречивой информации.

Уникальные ограничения часто используются для таких столбцов, как идентификаторы пользователей, email-адреса, номера телефонов и другие данные, которые должны быть уникальными для каждой записи.

В отличие от первичных ключей (primary key), которые также обеспечивают уникальность, в таблице может быть только один первичный ключ, а unique constraints можно определять для нескольких столбцов или их комбинаций.

Как unique constraint предотвращает дублирование данных

При добавлении unique constraint система управления базами данных (СУБД) автоматически контролирует вставку и обновление данных в таблице, не допуская нарушения ограничения.

Проверка при вставке и обновлении строк

При попытке вставить строку, содержащую уже существующее значение в столбцах с ограничением unique, или обновить строку, устанавливая дублирующееся значение, СУБД выдаст ошибку и не допустит операцию.

Автоматическое создание индекса

Чтобы ускорить проверку уникальности, СУБД автоматически создает уникальный индекс по столбцам с ограничением. Это позволяет быстрее находить дубликаты.

Синтаксис создания

Unique constraint можно определить двумя способами:

  1. При создании таблицы с помощью оператора CREATE TABLE
  2. Для уже существующей таблицы через ALTER TABLE

При создании таблицы (CREATE TABLE)

Syntax:

 CREATE TABLE table_name ( column1 datatype UNIQUE, column2 datatype, ... ); 

Либо:

 CREATE TABLE table_name ( column1 datatype, column2 datatype, ... CONSTRAINT constraint_name UNIQUE (column1, column2) ); 

Для существующей таблицы (ALTER TABLE)

Syntax:

 ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column1, column2); 

Рассмотрим несколько практических примеров применения уникальных ограничений.

Для столбца email пользователей

 CREATE TABLE users ( id INT PRIMARY KEY, fullname VARCHAR(100), email VARCHAR(100) UNIQUE ); 

Здесь для столбца email в таблице пользователей users определено unique constraint, запрещающее дублирование email адресов.

Для сочетания столбцов

 CREATE TABLE articles ( user_id INT, article_name VARCHAR(100), CONSTRAINT unique_per_user UNIQUE (user_id, article_name) ); 

В данном случае уникальным должно быть сочетание столбцов user_id и article_name, то есть один пользователь может иметь только уникальные названия статей.

Как видим, возможности применения довольно широкие.

Особенности по сравнению с первичными ключами

Несмотря на схожесть функций, между unique constraints и первичными ключами (primary key) есть несколько отличий:

  • В таблице может быть только один primary key, а unique constraints можно определять для нескольких столбцов или их комбинаций
  • Столбцы primary key не могут содержать NULL значения, а в столбцах с unique constraint допускается одно NULL значение
  • Обычно primary key используется для идентификации каждой строки, а unique constraints - для значимых бизнес-данных вроде email

Таким образом, уникальные ограничения - универсальный и гибкий инструмент поддержания целостности данных в SQL.

Комментарии