MySQL |有外键时删除行
在本文中,让我们讨论 SQL 中外键的概述,主要关注如何在 MySQL 中删除外键。让我们一步一步地讨论它。
外键:
在外键中,当一个表中的非主键属性引用另一个表中的主键相同的属性时,非主键称为外键。我们使用外键引用来建立表和任何表中执行的任何操作之间的链接。
MySQL有外键时删除行的步骤:
在这里,我们将通过示例讨论在 MySQL 中有外键时实现删除行所需的步骤,以便更好地理解。
步骤 1:创建数据库:
使用以下 SQL 查询创建数据库学生,如下所示。
CREATE DATABASE student;
输出 :
步骤 2:使用数据库:
使用数据库 student 使用以下 SQL 查询如下。
USE student;
输出 :
步骤 3:创建两个表:
表 1 –使用以下 SQL 查询创建一个包含 3 列的表 student_details,如下所示。
CREATE TABLE student_details
(
student_id INT PRIMARY KEY,
Student_name varchar(8),
student_year varchar(8)
);
输出 :
表 2 –使用以下 SQL 查询创建一个包含 3 列的表 student_exam,如下所示。
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_details 表中的 student_id。在这里,添加 ON DELETE CASCADE是因为当在一个表中删除任何行时,在引用该表中的主键的外部引用表中也会删除相同的行。
步骤 4:验证数据库:
要查看数据库中表的描述,请使用以下 SQL 查询,如下所示。
DESCRIBE student_details;
输出 :
DESCRIBE student_exam;
输出 :
在这里,我们可以在 key 列中看到外键的 MUL。
步骤 5:将数据插入表中:
使用以下 SQL 查询将行插入 student_details 表中,如下所示。
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');
输出 :
使用以下 SQL 查询将行插入 student_exam 表中,如下所示。
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:验证插入的数据:
插入行后使用以下 SQL 查询查看表 student_details,如下所示。
SELECT * FROM student_details;
输出 :
插入行后使用以下 SQL 查询查看表 student_exam,如下所示。
SELECT* FROM student_exam;
输出 :
笔记 -
如果未使用 ON DELETE CASCADE 约束,则会发生引用错误。
步骤 7:当有外键时删除行:
查询以从 student_exam 表中删除 ID 为 19102048 的学生,其中引用的表是 student_details。
句法 -
DELETE FROM table_name
WHERE constraint;
询问 -
DELETE FROM student_details
WHERE student_id=19102048;
输出:删除前 –
输出:删除后 -
学生 ID 为 19102048 的行在两个表中都被删除。