Какими SQL-командами можно добавить ограничение (constraint) к существующей таблице?

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

Ответ

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

  1. PRIMARY KEY:
    ALTER TABLE employees ADD PRIMARY KEY (id);
  2. FOREIGN KEY:
    ALTER TABLE orders
    ADD CONSTRAINT fk_orders_customer_id
    FOREIGN KEY (customer_id) REFERENCES customers(id);
  3. UNIQUE:
    ALTER TABLE users ADD UNIQUE (email);
    -- Или с именем:
    ALTER TABLE users ADD CONSTRAINT uc_user_email UNIQUE (email);
  4. CHECK:
    ALTER TABLE products
    ADD CONSTRAINT chk_product_price CHECK (price > 0);
  5. NOT NULL (модификация столбца):
    ALTER TABLE employees ALTER COLUMN name SET NOT NULL;
    -- В MySQL: ALTER TABLE employees MODIFY name VARCHAR(100) NOT NULL;

Удаление ограничения:

ALTER TABLE table_name DROP CONSTRAINT constraint_name;