SQL DELETE语句入门:如何删除表中的数据
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 语句,以及如何应用它来删除表中的一行或多行。