问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SQL DELETE语句入门:如何删除表中的数据

创作时间:
作者:
@小白创作中心

SQL DELETE语句入门:如何删除表中的数据

引用
1
来源
1.
https://sqltutorial.cn/sql-delete/

DELETE语句是SQL中用于删除表中数据的重要命令。掌握DELETE语句的使用方法,可以帮助你更高效地管理数据库中的数据。本文将详细介绍DELETE语句的基本语法、使用场景以及相关注意事项。

SQL DELETE 语句简介

若要从表中删除一行或多行,可以使用 DELETE 语句。DELETE 语句的常规语法如下:

DELETE
FROM
    table_name
WHERE
    condition;

首先,提供想要从中删除行的表的名称。其次,在 WHERE 子句中指定条件以识别需要删除的行。如果您省略 WHERE 子句,则将删除表中的所有行。因此,您应始终谨慎使用 DELETE 语句。

一般而言,DELETE 语句不会像 SELECT 语句一样返回结果集。但是,它确实返回已删除的行数。

SQL DELETE 语句示例

我们将使用 employees 和 dependents 表来演示 DELETE 语句。

SQL DELETE 表中的单行

假设员工 ID 为 105 的 David 想要从其家属列表中删除 Fred。我们知道 Fred 的家属 ID 为 16,因此我们使用以下 DELETE 语句从 dependents 表中删除 Fred。

DELETE FROM dependents 
WHERE
    dependent_id = 16;

由于 WHERE 子句包含标识 Fred 的主键表达式,因此 DELETE 语句仅删除一行。您可以通过使用以下语句来验证家属 ID 为 16 的行是否已删除

SELECT 
    COUNT(*)
FROM
    dependents
WHERE
    dependent_id = 16;

SQL DELETE 多行示例

若要删除表中的多行,请在 WHERE 子句中使用条件来标识应该删除的行。例如,以下语句使用 IN 运算符来包括 ID 为 100、101 或 102 的员工的家属。

DELETE FROM dependents 
WHERE
    employee_id IN (100 , 101, 102);

SQL DELETE 相关表中的行

一名员工可能有零名或多名家属,而一名家属仅属于一名员工。 dependents 表中的 employee_id 列链接到 employees 表中的 employee_id 列。 employees 表和 dependents 表之间的关系是一对多。

从逻辑上讲,家属不能在不参考任何员工的情况下存在。换句话说,当您删除一名员工时,他的或她的家属也必须被删除。例如,若要删除员工 ID 192 及其所有家属,您需要执行两个 DELETE 语句,如下所示

DELETE
FROM
    employees
WHERE
    employee_id = 192;
DELETE
FROM
    dependents
WHERE
    employee_id = 192;

大多数数据库系统都支持外键约束,以便当从表中删除一行时,外键表中的行也会自动删除。因此,当执行以下 DELETE 语句时

DELETE
FROM
    employees
WHERE
    employee_id = 192;

所有 employee_id 为 192 的行也会自动删除。

若要更高效地从表中删除所有行,请使用 TRUNCATE TABLE 语句,而不是使用不带 WHERE 子句的 DELETE 语句。

现在,您应该了解 SQL DELETE 语句,以及如何应用它来删除表中的一行或多行。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号