CONSTRAINT в Oracle SQL — как задавать ограничения для проверки целостности данных

🟢 CONSTRAINT в Oracle SQL. Введение

CONSTRAINT в Oracle SQL — это ключевое слово, с помощью которого можно задать ограничения на данные, обеспечивая их валидность, уникальность и согласованность.

С помощью CONSTRAINT можно задать:

  • Первичный ключ (PRIMARY KEY)

  • Уникальность (UNIQUE)

  • Внешние связи (FOREIGN KEY)

  • Обязательность значения (NOT NULL)

  • Пользовательские условия (CHECK)

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


🔤 Написание

sql
CONSTRAINT имя_ограничения тип_ограничения (столбец/столбцы)

Можно задать:

  • в теле CREATE TABLE

  • с помощью ALTER TABLE


🔄 Где используется

  • При создании таблиц

  • При добавлении ограничений к уже существующим таблицам

  • В администрировании и миграциях

  • При разработке логической модели базы данных

  • В контроле ввода данных на уровне БД


🧪 10 Примеров использования CONSTRAINT

1️⃣ Первичный ключ

sql
CREATE TABLE employees (
employee_id NUMBER,
first_name VARCHAR2(50),
CONSTRAINT pk_employees PRIMARY KEY (employee_id)
);

2️⃣ Уникальное ограничение

sql
CREATE TABLE users (
username VARCHAR2(30),
email VARCHAR2(100),
CONSTRAINT unq_email UNIQUE (email)
);

3️⃣ Внешний ключ

sql
CREATE TABLE orders (
order_id NUMBER,
customer_id NUMBER,
CONSTRAINT fk_customer FOREIGN KEY (customer_id)
REFERENCES customers(customer_id)
);

4️⃣ Ограничение CHECK

sql
CREATE TABLE payments (
amount NUMBER,
CONSTRAINT chk_amount CHECK (amount > 0)
);

5️⃣ NOT NULL через CONSTRAINT

sql
CREATE TABLE logs (
log_id NUMBER,
log_text VARCHAR2(200),
CONSTRAINT nn_log_text CHECK (log_text IS NOT NULL)
);

6️⃣ Добавление ограничения после создания таблицы

sql
ALTER TABLE users
ADD CONSTRAINT unq_username UNIQUE (username);

7️⃣ Удаление ограничения

sql
ALTER TABLE users
DROP CONSTRAINT unq_username;

8️⃣ Ограничение с несколькими столбцами

sql
CREATE TABLE product_stock (
product_id NUMBER,
warehouse_id NUMBER,
quantity NUMBER,
CONSTRAINT pk_product_warehouse PRIMARY KEY (product_id, warehouse_id)
);

9️⃣ Именованные ограничения = читаемость

sql
-- Хорошо
CONSTRAINT fk_order_customer FOREIGN KEY (customer_id)
— Плохо
FOREIGN KEY (customer_id)

Именованные ограничения облегчают поддержку и отладку.


🔟 Проверка ограничений в словарях данных

sql
SELECT constraint_name, constraint_type, table_name
FROM user_constraints
WHERE table_name = 'ORDERS';

🧩 CONSTRAINT в Oracle SQL. Заключение

Оператор CONSTRAINT в Oracle SQL — это ключевой инструмент для контроля целостности данных. Он помогает:

  • Предотвращать ошибки ввода

  • Поддерживать связи между таблицами

  • Гарантировать уникальность и корректность

💡 Помни:

  • Всегда давай понятные имена ограничениям

  • Используй CHECK для бизнес-правил

  • Отслеживай ограничения через USER_CONSTRAINTS


🔜 Следующая статья:

COMMENT в Oracle SQL — как документировать таблицы и столбцы прямо в базе данных


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии