17:19
Первичные и внешние ключи: Понятие первичного и внешнего ключей, их создание и использование.

Курс по SQL

Урок 12: Первичные и внешние ключи: Понятие первичного и внешнего ключей, их создание и использование

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

Понятие первичного ключа

Первичный ключ (Primary Key) — это одно или несколько полей в таблице, которые уникально идентифицируют каждую запись. Первичный ключ не может содержать NULL значений и должен быть уникальным для каждой строки. Обычно первичный ключ создается на поле типа INT с автоинкрементом.

Пример создания первичного ключа

Рассмотрим пример создания таблицы «Студенты» с первичным ключом:

CREATE TABLE Студенты (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Имя VARCHAR(50),
 Фамилия VARCHAR(50),
 ДатаРождения DATE,
 Email VARCHAR(50)
);

Результат выполнения

Таблица "Студенты" создана. Поле "ID" является первичным ключом.

Понятие внешнего ключа

Внешний ключ (Foreign Key) — это поле или набор полей в одной таблице, которые ссылаются на первичный ключ в другой таблице. Внешние ключи используются для обеспечения целостности данных и создания связей между таблицами. Они предотвращают создание записей, которые не соответствуют связанным записям в другой таблице.

Пример создания внешнего ключа

Рассмотрим пример создания таблицы «Заказы», где поле «СтудентID» является внешним ключом, ссылающимся на таблицу «Студенты»:

CREATE TABLE Заказы (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 СтудентID INT,
 Дата DATE,
 Сумма DECIMAL(10, 2),
 FOREIGN KEY (СтудентID) REFERENCES Студенты(ID)
);

Результат выполнения

Таблица "Заказы" создана. Поле "СтудентID" является внешним ключом, ссылающимся на "ID" таблицы "Студенты".

Использование первичных и внешних ключей

Первичные и внешние ключи обеспечивают целостность данных и позволяют создавать связи между таблицами. Рассмотрим несколько примеров использования этих ключей.

Вставка данных с внешним ключом

Рассмотрим вставку данных в таблицу «Заказы», где «СтудентID» должен ссылаться на существующую запись в таблице «Студенты»:

INSERT INTO Студенты (Имя, Фамилия, ДатаРождения, Email)
VALUES ('Иван', 'Иванов', '1995-05-01', 'ivanov@example.com');

INSERT INTO Заказы (СтудентID, Дата, Сумма)
VALUES (1, '2024-01-01', 100.00);

Результат выполнения

1 запись добавлена в таблицу "Студенты".
1 запись добавлена в таблицу "Заказы". Поле "СтудентID" ссылается на "ID" в таблице "Студенты".

Попытка вставки данных с недействительным внешним ключом

Попытка вставить данные в таблицу «Заказы» с «СтудентID», который не существует в таблице «Студенты», вызовет ошибку:

INSERT INTO Заказы (СтудентID, Дата, Сумма)
VALUES (999, '2024-01-01', 100.00);

Результат выполнения

Ошибка: невозможно добавить или обновить строку: ограничение внешнего ключа не выполнено.

Упражнения

Упражнение 1: Создание таблицы «Курсы» с первичным ключом

Создайте таблицу «Курсы», которая будет содержать следующие поля: «ID», «Название», «Описание». Поле «ID» должно быть первичным ключом.

Решение:

CREATE TABLE Курсы (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 Название VARCHAR(100),
 Описание TEXT
);

Объяснение: Мы создали таблицу «Курсы» с полем «ID», которое является первичным ключом.

Упражнение 2: Создание таблицы «Регистрации» с внешним ключом

Создайте таблицу «Регистрации», которая будет содержать следующие поля: «ID», «СтудентID», «КурсID», «ДатаРегистрации». Поле «СтудентID» должно ссылаться на таблицу «Студенты», а поле «КурсID» — на таблицу «Курсы».

Решение:

CREATE TABLE Регистрации (
 ID INT PRIMARY KEY AUTO_INCREMENT,
 СтудентID INT,
 КурсID INT,
 ДатаРегистрации DATE,
 FOREIGN KEY (СтудентID) REFERENCES Студенты(ID),
 FOREIGN KEY (КурсID) REFERENCES Курсы(ID)
);

Объяснение: Мы создали таблицу «Регистрации» с внешними ключами «СтудентID», ссылающимся на таблицу «Студенты», и «КурсID», ссылающимся на таблицу «Курсы».

Упражнение 3: Вставка данных в таблицу «Регистрации»

Добавьте записи в таблицу «Регистрации», ссылаясь на существующие записи в таблицах «Студенты» и «Курсы».

Решение:

INSERT INTO Регистрации (СтудентID, КурсID, ДатаРегистрации)
VALUES (1, 1, '2024-09-01');

Объяснение: Мы добавили запись в таблицу «Регистрации», указав идентификаторы студента и курса, а также дату регистрации.

Категория: SQL | Просмотров: 17 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: