Раздел помощи SpaceWeb

Ограничения SQL

26 фев, 2024

Ограничения в базе данных – это специальные элементы, которые устанавливают правила для приемлемых значений в столбцах таблицы. 

Их основная задача заключается в автоматизации обеспечения целостности базы данных, то есть соблюдения определенных правил и условий, установленных разработчиками, для хранящихся в базе данных.

Ограничения выполняют следующие функции:

  1. Гарантируют уникальность данных.
  2. Обеспечивают связанность данных.
  3. Гарантируют целостность значений.
  4. Защищают от ошибок ввода данных.

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

Как добавить ограничения в SQL

Добавление ограничений в SQL происходит при создании или изменении таблицы. 

Давайте подробно рассмотрим, как добавляются различные виды ограничений.

Ограничение UNIQUE

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

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

Вот как можно применить UNIQUE при создании таблицы:

В этом примере для столбцов «Cоlumn1» и «Cоlumn2» установлено ограничение UNIQUE. 

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

Пример с составным ключом:

Особенности ограничения UNIQUE:

  • Гарантированная уникальность значений. Как мы уже сказали ранее, ограничение UNIQUE гарантирует, что все значения в указанных столбцах будут уникальными. Если при вставке новой записи обнаружится значение, которое уже присутствует в столбце с этим ограничением, операция будет отклонена.
  • Обработка NULL-значений. В столбце с ограничением UNIQUE может присутствовать только одно NULL-значение. Если столбец допускает NULL, и в нем уже есть NULL-значение, то добавление нового NULL разрешено, но все остальные значения должны быть уникальными.
  • Индексация. Для реализации ограничения UNIQUE SQL Server автоматически создает уникальный индекс. Этот индекс используется для эффективного поиска и проверки уникальности значений в соответствующем столбце.

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

Ограничение CHECK

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

Пример использования ограничения CHECK при создании таблицы:

В этом примере установлено ограничение CHECK для столбца «Salary». Оно гарантирует, что значения в этом столбце будут строго положительными. Также здесь установлено ограничение CHECK для столбца «EmplоymentStatus», которое ограничивает его значения только результатами «Full-Timе» или «Part-Time».

Особенности ограничения CHECK:

  • Определение условия. Ограничение "CHECK" предоставляет возможность определить сложное условие, которому должны соответствовать значения в конкретном столбце. Это условие может включать в себя математические операторы, логические выражения и функции.
  • Предотвращение некорректных значений. Ограничение CHECK активно препятствует вставке или обновлению записей с значениями, не соответствующими заданному условию. Например, можно использовать CHECK для предотвращения вставки отрицательных значений, дат из прошлого и прочих некорректных данных.
  • Различные условия. В одной таблице можно установить несколько ограничений CHECK для разных столбцов или для одного и того же столбца с применением различных условий.

Пример использования нескольких ограничений «CHECK»:

Ограничения «CHECK» полезны для обеспечения корректности данных в таблице и предотвращения вставки или обновления записей, нарушающих заданные условия.

Ограничение NOT NULL

В SQL ограничение NOT NULL указывает, что значения в определенном столбце не могут быть равны NULL. 

NULL – это отсутствие значения или неопределенное значение. Ограничение NOT NULL гарантирует, что каждая запись в соответствующем столбце содержит конкретное значение и не допускает пустых ячеек.

Пример использования ограничения NOT NULL при создании таблицы:

Особенности ограничения NOT NULL:

  • Предотвращение значений NULL. Ограничение NOT NULL запрещает вставку записей с «пустыми» значениями в указанный столбец. Если при вставке записи не указано значение для столбца с этим ограничением или если значение равно NULL, операция будет отклонена.
  • Явное указание обязательных значений. С помощью NOT NULL разработчик может предотвратить возможные проблемы, связанные с отсутствующими значениями.
  • Применение к различным типам данных. Ограничение NOT NULL может быть применено к разнообразным типам данных, включая числовые, строковые, даты и другие. Важно выбирать столбцы, для которых отсутствие значения NULL имеет смысл с точки зрения логики.
  • Оператор ALTER TABLE. Если вам необходимо добавить ограничение NOT NULL к столбцу в уже существующей таблице, то вы можете воспользоваться оператором ALTER TABLE.

Пример добавления ограничения NOT NULL с использованием ALTER TABLE:

где «TableNаme» – название таблицы, «CоlumnNаme» – название столбца.

Ограничение PRIMARY KEY

В SQL ограничение PRIMARY KEY применяется для установки первичного ключа в таблице. 

Первичный ключ представляет собой уникальный идентификатор для каждой записи в таблице и обеспечивает уникальность значений в определенном столбце (или группе столбцов). С ним можно более эффективно работать с записями.

Пример использования ограничения PRIMARY KEY при создании таблицы:

Особенности ограничения PRIMARY KEY:

  • Эффективность поиска. С PRIMARY KEY поиск и извлечение данных по первичному ключу можно выполнять более эффективно, поскольку база данных использует автоматически созданный индекс для первичного ключа, обеспечивая быстрый доступ к записям.
  • Идентификация записей. Первичный ключ помогает с уникальной идентификацией каждой записи в таблице. Это полезно при установлении связей между таблицами, создании внешних ключей и обеспечении целостности ссылок.

Если вы хотите добавить первичный ключ уже после создания таблицы, то, как и в предыдущем случае, вам потребуется оператор ALTER TABLE:

где «TableNаme» – имя таблицы, «CоlumnNаme» – имя столбца, который будет использоваться в качестве первичного ключа.

Ограничение PRIMARY KEY – это важная часть проектирования баз данных. Оно обеспечивает уникальную идентификацию записей, что полезно для поддержания целостности данных и оптимизации запросов.

Ограничение FOREIGN KEY

Ограничение FOREIGN KEY в SQL используется для создания связи между двумя таблицами. 

Ограничение FOREIGN KEY определяет, что значения в столбце (или группе столбцов) внешней таблицы соответствуют значениям в столбце (или группе столбцов) первичного ключа или уникального ключа другой таблицы. Он обеспечивает целостность данных между связанными таблицами.

Пример использования ограничения FOREIGN KEY при создании таблицы:

В этом примере столбец «ClientID» в таблице «Orders» является внешним ключом, который ссылается на столбец «ClientID» в таблице «Clients».

Особенности ограничения FOREIGN KEY:

  • Связывание таблиц. Ограничение FOREIGN KEY создает связь между двумя таблицами. Значения в столбце, указанном как FOREIGN KEY, должны существовать в столбце, который является первичным ключом или уникальным ключом в другой таблице.
  • Ссылочная целостность. Ограничение FOREIGN KEY обеспечивает ссылочную целостность данных. Иными словами, с ним вы можете быть уверены, что в вашей БД не будет ссылок на несуществующие значения в родительской таблице.
  • Операторы ON DELETE и ON UPDATE. Ограничение FOREIGN KEY может использовать опции ON DELETE и ON UPDATE для указания дальнейших действий при удалении или обновлении родительской записи. 

Например, так можно определить, что при удалении клиента из таблицы «Clients», все связанные заказы в таблице «Orders» будут удалены:

  • Оператор ALTER TABLE. Обычно, ограничение FOREIGN KEY определяется в момент создания таблицы. Однако это можно сделать и после ее создания с помощью оператора ALTER TABLE.

Пример добавления внешнего ключа через оператор ALTER TABLE:

где «TableNаme» – название таблицы, «CоlumnNаme» – название столбца, который будет использоваться в качестве внешнего ключа, «OtherTable» – название родительской таблицы, «OtherCоlumnNаme» – название столбца в родительской таблице.

Ограничение DEFAULT

В SQL ограничение DEFAULT применяется, чтобы задать значения по умолчанию для столбца на случай, если при вставке новой записи в таблицу не указано конкретное значение для этого столбца. 

Пример использования ограничения DEFAULT при создании таблицы:

Особенности ограничения DEFAULT:

  • Работа с различным типами данных. Ограничение DEFAULT может быть применено к различным типам данных, включая числовые, строковые и так далее.
  • Применение при создании и изменении таблицы. Ограничение DEFAULT можно устанавливать как при создании таблицы, так и позже, с использованием оператора ALTER TABLE.

Пример добавления ограничения DEFAULT через оператор ALTER TABLE:

где «TableNаme» – название таблицы, «CоlumnNаme» – название столбца, для которого устанавливается значение по умолчанию, «DefaultValue» – значение, которое будет использовано по умолчанию.

  • NULL и DEFAULT. Значение, установленное с помощью DEFAULT, будет применено только в том случае, если при вставке явно не указано значение и если столбец разрешает NULL. Если столбец запрещает NULL, то будет использовано значение по умолчанию:

В этом примере, столбец «Nаme» имеет значение по умолчанию «Unknown» и не разрешает NULL.

Заключение

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

Правильное использование ограничений в SQL обеспечит не только безопасное хранение данных, но и эффективное выполнение запросов, а также поддержание ссылочной целостности в сложных системах.