PRIMARY KEY в Oracle SQL: как задать уникальный идентификатор строки

🟢 Введение

PRIMARY используется в сочетании с KEY для задания основного ключа таблицы.
Это означает, что вы обозначаете столбец (или несколько столбцов), значения которого должны быть уникальны и не могут быть NULL — он играет роль идентификатора строки.

В Oracle SQL вы можете задать PRIMARY KEY:

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

  • Позже, с помощью ALTER TABLE


🔤 Написание

Базовый синтаксис при создании таблицы:

sql
CREATE TABLE имя_таблицы (
столбец тип_данных PRIMARY KEY
);

Или с явным указанием имени ограничения:

sql
CREATE TABLE имя_таблицы (
столбец тип_данных,
CONSTRAINT имя_ограничения PRIMARY KEY (столбец)
);

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

  • При проектировании таблиц, для обеспечения уникальности каждой строки

  • Для построения связей между таблицами (через FOREIGN KEY)

  • В нормализованных базах данных

  • В генерации индексов (Oracle автоматически создаёт индекс на PRIMARY KEY)


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

1️⃣ Создание таблицы с PRIMARY KEY

sql
CREATE TABLE departments (
department_id NUMBER PRIMARY KEY,
department_name VARCHAR2(100)
);

Уникальный идентификатор — department_id.


2️⃣ PRIMARY KEY с именем ограничения

sql
CREATE TABLE categories (
category_id NUMBER,
name VARCHAR2(50),
CONSTRAINT pk_categories PRIMARY KEY (category_id)
);

Явное имя для ограничения удобно при отладке и удалении.


3️⃣ ALTER TABLE — добавление PRIMARY KEY

sql
ALTER TABLE products
ADD CONSTRAINT pk_products PRIMARY KEY (product_id);

Добавляем первичный ключ после создания таблицы.


4️⃣ PRIMARY KEY из нескольких столбцов (составной ключ)

sql
CREATE TABLE course_enrollments (
student_id NUMBER,
course_id NUMBER,
enrollment_date DATE,
CONSTRAINT pk_enroll PRIMARY KEY (student_id, course_id)
);

Каждому студенту можно быть записанным на курс только один раз.


5️⃣ Попытка вставки дубликата (ошибка)

sql
INSERT INTO departments (department_id, department_name)
VALUES (10, 'Sales');
— Повторная вставка вызовет ошибку:
INSERT INTO departments (department_id, department_name)
VALUES (10, ‘IT’);

Ошибка ORA-00001: нарушение ограничения уникальности.


6️⃣ Попытка вставить NULL (ошибка)

sql
INSERT INTO departments (department_id, department_name)
VALUES (NULL, 'HR');

Ошибка — PRIMARY KEY не допускает NULL.


7️⃣ Удаление PRIMARY KEY

sql
ALTER TABLE categories
DROP CONSTRAINT pk_categories;

Удаляем ограничение, если оно больше не нужно.


8️⃣ Поиск по PRIMARY KEY — быстро благодаря индексу

sql
SELECT * FROM departments WHERE department_id = 50;

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


9️⃣ Создание таблицы с FOREIGN и PRIMARY KEY

sql
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
department_id NUMBER,
CONSTRAINT fk_dept FOREIGN KEY (department_id)
REFERENCES departments(department_id)
);

Устанавливаем связь между таблицами.


🔟 Проверка ограничений в системе

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

Находим все первичные ключи пользователя.


🧩 Заключение

PRIMARY KEY — это не просто формальность. Это основа идентификации строк в таблице и правильной структуры базы данных.
С помощью PRIMARY вы предотвращаете дублирование, упрощаете связи между таблицами и делаете свои данные надёжными.


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

Оператор KEY в Oracle SQL — как он работает с PRIMARY, FOREIGN и другими ограничениями

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