Какие ограничения (constraints) в SQL вы знаете, кроме PRIMARY KEY, UNIQUE, NOT NULL и CHECK?

«Какие ограничения (constraints) в SQL вы знаете, кроме PRIMARY KEY, UNIQUE, NOT NULL и CHECK?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Помимо перечисленных, ключевыми ограничениями в SQL являются FOREIGN KEY и DEFAULT.

1. FOREIGN KEY (Внешний ключ)

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

Пример создания:

CREATE TABLE departments (
    dept_id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

CREATE TABLE employees (
    emp_id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    dept_id INT,
    CONSTRAINT fk_employee_department 
        FOREIGN KEY (dept_id) 
        REFERENCES departments(dept_id)
        ON DELETE CASCADE
);

Действия при изменении/удалении (ON DELETE / ON UPDATE):

  • CASCADE – удалить/обновить связанные строки в дочерней таблице.
  • SET NULL – установить NULL в дочерней таблице.
  • RESTRICT / NO ACTION – запретить операцию, если есть зависимости.
  • SET DEFAULT – установить значение по умолчанию.

2. DEFAULT

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

Пример:

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status VARCHAR(20) DEFAULT 'PENDING',
    total_amount DECIMAL(10,2) DEFAULT 0.00
);

-- При вставке order_date и status будут заполнены автоматически
INSERT INTO orders (order_id) VALUES (1001);