MySQL | Удаление строк при наличии внешнего ключа

Опубликовано: 28 Августа, 2022

В этой статье давайте обсудим обзор внешнего ключа в SQL, и основное внимание будет уделено тому, как удалить внешний ключ в MySQL. Давайте обсудим это шаг за шагом.

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

Шаги по удалению строк при наличии внешнего ключа в MySQL :
Здесь мы обсудим необходимые шаги для реализации удаления строк при наличии внешнего ключа в MySQL с помощью примеров для лучшего понимания.

Шаг 1: Создание базы данных :
Создание студента базы данных с помощью следующего запроса SQL следующим образом.

CREATE DATABASE student;

Выход :

Шаг 2: Использование базы данных :
Использование студента базы данных с помощью следующего SQL-запроса следующим образом.

USE student;

Выход :

Шаг 3: Создание двух таблиц:
Таблица 1. Создание таблицы student_details с 3 столбцами с использованием следующего SQL-запроса следующим образом.

CREATE TABLE student_details
(
     student_id INT PRIMARY KEY,
     Student_name varchar(8),
     student_year varchar(8)
);

Выход :

Таблица 2. Создание таблицы student_exam с 3 столбцами с использованием следующего SQL-запроса следующим образом.

CREATE TABLE student_exam
(
  exam_id INT PRIMARY KEY,
  exam_name varchar(8),
  student_id INT,
  FOREIGN KEY(student_id) 
  REFERENCES student_details(student_id) 
  ON DELETE CASCADE
);

Выход :
Таблица student_exam имеет внешний ключ student_id, ссылающийся на student_id в таблице student_details. Здесь добавляется ON DELETE CASCADE , потому что, когда любая строка удаляется в одной таблице, она удаляется во внешних таблицах, на которые ссылаются, которые ссылаются на первичный ключ в этой таблице.

Шаг 4: Проверка базы данных :
Для просмотра описания таблиц в базе данных используется следующий SQL-запрос следующим образом.

DESCRIBE student_details;

Выход :

DESCRIBE student_exam;

Выход :
Здесь мы видим MUL для внешнего ключа в ключевом столбце.

Шаг 5: Вставка данных в таблицу :
Вставка строк в таблицу student_details с помощью следующего запроса SQL следующим образом.

INSERT INTO student_details VALUES(19102047,"PRADEEP","1st");
INSERT INTO student_details VALUES(19102048,"KOUSHIK","1st");
INSERT INTO student_details VALUES(19102049,"SATWIK","2st");
INSERT INTO student_details VALUES(19102050,"VAMSI","2nd");

Выход :

Вставка строк в таблицу student_exam с использованием следующего запроса SQL следующим образом.

INSERT INTO student_exam VALUES(9001,"DBMS","19102047");
INSERT INTO student_exam VALUES(9002,"C.N","19102048");
INSERT INTO student_exam VALUES(9003,"O.S","19102049");
INSERT INTO student_exam VALUES(9004,"O.S","19102050");

Выход :

Шаг 6: Проверка вставленных данных:
Просмотр таблицы student_details после вставки строк с помощью следующего запроса SQL следующим образом.

SELECT * FROM student_details;

Выход :

Просмотр таблицы student_exam после вставки строк с помощью следующего запроса SQL следующим образом.

SELECT* FROM student_exam;

Выход :

Примечание -
Если ограничение ON DELETE CASCADE не используется, возникает ошибка ссылки.

Шаг 7: Удаление строк при наличии внешнего ключа:
Запрос на удаление студента с идентификатором 19102048 из таблицы student_exam, где ссылочные таблицы — student_details.
Синтаксис –

 DELETE FROM table_name
 WHERE constraint;

Запрос -

 DELETE FROM student_details
 WHERE student_id=19102048;

Вывод: Перед удалением –

Вывод: после удаления –
Строки с идентификатором учащегося 19102048 удаляются из обеих таблиц.