← Назад к вопросам

Что такое первичный ключ (Primary Key)?

1.0 Junior🔥 201 комментариев
#SQL и базы данных

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое первичный ключ (Primary Key)?

Первичный ключ — это уникальный идентификатор записи в таблице базы данных. Это одно или несколько полей, которые однозначно определяют каждую строку в таблице, гарантируя её уникальность и исключая дубликаты.

Основные характеристики первичного ключа:

  1. Уникальность — каждое значение первичного ключа встречается в таблице только один раз. Никакие две записи не могут иметь одинаковое значение ключа.

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

  3. Неизменяемость — значение первичного ключа не должно изменяться в течение жизни записи. Изменение ключа может нарушить целостность данных и связи между таблицами.

  4. Минимальность — первичный ключ должен состоять из минимального количества полей, необходимого для уникальной идентификации.

Типы первичных ключей:

Простой первичный ключ — состоит из одного поля:

CREATE TABLE users (
    user_id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

Составной (композитный) первичный ключ — состоит из двух и более полей:

CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    PRIMARY KEY (order_id, product_id)
);

Примеры использования:

Автоинкрементирующийся числовой ключ (наиболее распространённый вариант):

CREATE TABLE customers (
    customer_id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

UUID в качестве первичного ключа (для распределённых систем):

CREATE TABLE products (
    product_uuid UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    product_name VARCHAR(200),
    price DECIMAL(10,2)
);

Роль первичного ключа в базе данных:

  • Целостность данных — СУБД использует первичный ключ для предотвращения дублирования и обеспечения консистентности.
  • Производительность — первичный ключ автоматически индексируется, что ускоряет поиск записей.
  • Связь между таблицами — первичные ключи служат основой для создания внешних ключей (Foreign Keys) и связей между таблицами.
  • Уникальная идентификация — позволяет однозначно ссылаться на конкретную запись в других частях приложения.

Практический пример запроса:

-- Создание таблицы с первичным ключом
CREATE TABLE employees (
    employee_id INT PRIMARY KEY AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    salary DECIMAL(10,2),
    department_id INT
);

-- Попытка вставить запись с дублирующимся ключом (вызовет ошибку)
INSERT INTO employees (employee_id, first_name, last_name, salary) 
VALUES (1, "Иван", "Петров", 50000);

INSERT INTO employees (employee_id, first_name, last_name, salary) 
VALUES (1, "Петр", "Иванов", 60000); -- Ошибка: PRIMARY KEY violation

Первичный ключ — это фундаментальная концепция в проектировании баз данных, обеспечивающая логическую и физическую целостность информации.