SQL 删除违反参照完整性的记录

SQL 删除违反参照完整性的记录,

SQL 删除违反参照完整性的记录 问题描述

你想从表里删除一些记录,因为在另一个表里不存在与这些记录相匹配的数据。例如,一些员工所属的部门其实并不存在,你希望删除这些员工。

SQL 删除违反参照完整性的记录 解决方案

使用 NOT EXISTS 谓词和子查询来确认部门编号的有效性。

delete from emp
 where not exists (
   select * from dept
    where dept.deptno = emp.deptno
)

或者,也可以使用 NOT IN 谓词。

delete from emp
where deptno not in (select deptno from dept)

SQL 删除违反参照完整性的记录 扩展知识

删除其实就是查询,最重要的步骤是要写出正确的 WHERE 子句条件,以找出要删除哪些记录。
上述 NOT EXISTS 解决方案使用关联子查询来检查给定的 EMP 记录是否存在一条与其 DEPTNO 列相匹配的 DEPT 记录。如果存在这样的记录,那么该 EMP 记录就应该被保留下来。否则,它就会被删除。每一条 EMP 记录都会被这样检查一次。
上述 IN 解决方案使用子查询来获取有效部门编号的列表。然后针对每一条 EMP 记录,都会与该列表做比照检查。如果一条 EMP 记录的 DEPTNO 不存在于该列表中,则该 EMP 记录会被删除。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程