Что такое ограничение (constraint) в SQL

Constraint in SQL:

A constraint in SQL is a rule that is defined on a column or a table to enforce data integrity. It ensures that the data entered into the database meets certain conditions or restrictions.

There are different types of constraints that can be applied in SQL:

  • Primary Key Constraint: Ensures that a column or a combination of columns in a table uniquely identifies each row. Only one primary key constraint can be defined per table.
  • Foreign Key Constraint: Establishes a link between two tables and ensures the integrity of the data between the tables. It enforces referential integrity.
  • Unique Constraint: Ensures that the values in a column or a combination of columns are unique. Unlike primary key constraints, multiple unique constraints can be defined per table.
  • Check Constraint: Defines a condition that must be satisfied for the data entered into a column. If the condition evaluates to false, the data is rejected.
  • Not Null Constraint: Ensures that a column does not accept null values. It specifies that a particular column must always have a value.

Here are a few examples:


CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT CHECK (age >= 18),
  class_id INT,
  FOREIGN KEY (class_id) REFERENCES classes(id),
  UNIQUE (name)
);

In the above example:

  • The PRIMARY KEY constraint is applied to the id column, ensuring uniqueness.
  • The NOT NULL constraint is applied to the name column, ensuring it always has a value.
  • The CHECK constraint is applied to the age column, ensuring it is greater than or equal to 18.
  • The FOREIGN KEY constraint is applied to the class_id column, establishing a relationship with the classes table.
  • The UNIQUE constraint is applied to the name column, ensuring it has unique values.

Детальный ответ

Привет! Сегодня мы поговорим о ограничениях (constraints) в SQL. Ограничения - это правила, которые помогают обеспечить целостность данных в базе данных. Они определяют условия, которые должны выполняться для записей в таблице. В этой статье мы рассмотрим различные типы ограничений и их использование с примерами кода.

1. Ограничение на уникальность (UNIQUE)

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

Вот пример создания таблицы users с ограничением на уникальность для столбца email:

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

В этом примере создается таблица users с тремя столбцами: id, name и email. Ограничение UNIQUE применяется к столбцу email, чтобы гарантировать уникальность значений.

Если мы попытаемся вставить в таблицу две строки с одинаковыми значениями в столбце email, SQL СУБД выдаст ошибку.

2. Ограничение на внешний ключ (FOREIGN KEY)

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

Вот пример создания двух таблиц: orders и users, и установка ограничения на внешний ключ:

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE orders (
  id INT PRIMARY KEY,
  order_date DATE,
  user_id INT,
  FOREIGN KEY (user_id) REFERENCES users(id)
);

В этом примере создаются две таблицы: users и orders. Ограничение на внешний ключ устанавливается для столбца user_id в таблице orders и ссылается на столбец id в таблице users. Таким образом, каждая запись в таблице orders должна ссылаться на существующую запись в таблице users.

Если мы попытаемся вставить в таблицу orders запись с несуществующим значением в столбце user_id, SQL СУБД выдаст ошибку.

3. Ограничение на целостность (CHECK)

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

Вот пример создания таблицы employees с ограничением на целостность для столбца age:

CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT CHECK (age >= 18)
);

В этом примере создается таблица employees с тремя столбцами: id, name и age. Ограничение CHECK применяется к столбцу age, чтобы гарантировать, что значение в столбце age не будет меньше 18.

Если мы попытаемся вставить в таблицу запись с неправильным значением в столбце age (например, 16), SQL СУБД выдаст ошибку.

4. Ограничение на первичный ключ (PRIMARY KEY)

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

Вот пример создания таблицы products с ограничением на первичный ключ для столбца id:

CREATE TABLE products (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  price DECIMAL(10,2)
);

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

Если мы попытаемся вставить в таблицу две строки с одинаковыми значениями в столбце id, SQL СУБД выдаст ошибку.

Заключение

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

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

Благодарим за чтение! Если у вас есть вопросы, не стесняйтесь задавать их.

Видео по теме

Constraints в SQL

Constraints - SQL - Tutorial 8

CONSTRAINTS IN SQL

Похожие статьи:

Где в SQL Laravel: 5 мест, где вы можете использовать SQL в Laravel

Что такое ограничение (constraint) в SQL

Где использовать множественные столбцы в SQL

Агрегаты SQL: что такое?