Как добавить ограничения (constraints) в существующую таблицу в SQL?

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

Ответ

Да, для этого используется оператор ALTER TABLE. Основные типы ограничений и синтаксис их добавления:

-- 1. PRIMARY KEY
ALTER TABLE employees ADD CONSTRAINT pk_emp_id PRIMARY KEY (emp_id);

-- 2. FOREIGN KEY
ALTER TABLE orders ADD CONSTRAINT fk_customer 
FOREIGN KEY (customer_id) REFERENCES customers(id);

-- 3. UNIQUE
ALTER TABLE products ADD CONSTRAINT uq_product_code UNIQUE (product_code);

-- 4. CHECK
ALTER TABLE employees ADD CONSTRAINT chk_salary CHECK (salary > 0);

-- 5. NOT NULL (синтаксис отличается)
ALTER TABLE employees ALTER COLUMN email SET NOT NULL;
-- или (в некоторых СУБД, например, MySQL)
ALTER TABLE employees MODIFY COLUMN email VARCHAR(100) NOT NULL;

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