结构化查询语言(Structured Query Language)
完成条件
提示:注意并关闭 AUTOCOMMIT
由于 DELETE 命令会整行删除数据,而不是部分删除,其语法非常简单。在之前的页面中已经展示了它的基本结构。当前页面提供了一个补充说明:WHERE 子句不仅可以包含简单条件(例如 id = 10
),还可以包含子查询,这极大地增强了 DELETE 命令的灵活性。
子查询作为 DELETE 命令的一部分,其用法与在 UPDATE 或 SELECT 命令中的使用方式完全一致。
此外,还有另一个用于删除行的命令:TRUNCATE。与 DELETE 类似,TRUNCATE 会删除表中的所有行,但性能更高。然而,TRUNCATE 不支持选择特定行。
示例
以下示例删除出生地为 San Francisco 的人的联系方式:
-- 根据不同表中的条件删除行
DELETE FROM contact
WHERE person_id IN
(SELECT id
FROM person
WHERE place_of_birth = 'San Francisco'
);
-- 只是测试,恢复数据
ROLLBACK;
请注意,并非所有数据库实现都支持与 DELETE 命令结合使用的相关子查询。
外键约束的注意事项
执行 DELETE 命令时,可能会因为外键约束(Foreign Key constraints)的限制而失败。例如,如果尝试删除某个有联系方式或爱好记录的用户,该命令会整体失败。
为了解决这些问题,可以采取以下策略:
最后修改: 2025年01月28日 星期二 13:32