sql-delete-query
SQL - DELETE 语句
Section titled “SQL - DELETE 语句”SQL DELETE 语句用于从表中删除现有记录。
就像 UPDATE 语句一样,你必须使用 WHERE 子句来指定要删除的行。如果你省略 WHERE 子句,表中的所有记录都将被删除!
DELETE 语句的基本语法是:
DELETE FROM table_nameWHERE condition;WHERE 子句标识要删除的特定行。
使用我们的 Customers(客户)表:
+----+----------+-----+-------------+----------+| ID | Name | Age | City | Salary |+----+----------+-----+-------------+----------+| 1 | Ramesh | 32 | Ahmedabad | 2000.00 || 2 | Khilan | 25 | Delhi | 1500.00 || 3 | Kaushik | 23 | Kota | 2000.00 || 4 | Chaitali | 25 | Mumbai | 6500.00 || 5 | Hardik | 27 | Bhopal | 8500.00 || 6 | Komal | 22 | Hyderabad | 4500.00 || 7 | Muffy | 24 | Indore | 10000.00 |+----+----------+-----+-------------+----------+以下查询将删除 ID 为 6 的客户。
DELETE FROM CustomersWHERE ID = 6;此操作后,‘Komal’ 的行将从表中永久删除。
+----+----------+-----+-------------+----------+| ID | Name | Age | City | Salary |+----+----------+-----+-------------+----------+| 1 | Ramesh | 32 | Ahmedabad | 2000.00 || 2 | Khilan | 25 | Delhi | 1500.00 || 3 | Kaushik | 23 | Kota | 2000.00 || 4 | Chaitali | 25 | Mumbai | 6500.00 || 5 | Hardik | 27 | Bhopal | 8500.00 || 7 | Muffy | 24 | Indore | 10000.00 |+----+----------+-----+-------------+----------+删除所有记录
Section titled “删除所有记录”要删除表中的所有记录,你可以省略 WHERE 子句。然而,对于大型表,此操作可能很慢且占用大量资源。
-- 警告:这将删除表中的所有行。DELETE FROM Customers;对于删除所有记录,TRUNCATE TABLE 命令几乎总是一个更好的选择。它速度更快,使用的系统资源更少,并会重置任何自增列。有关详细比较,请参阅 TRUNCATE TABLE 章节。
最佳实践:安全第一
Section titled “最佳实践:安全第一”DELETE 是一种破坏性操作。在运行 DELETE 查询之前,特别是在生产环境中,请注意以下几点:
- 始终进行备份。
- 使用具有相同
WHERE子句的SELECT语句 来确认将要删除哪些行。这是至关重要的验证步骤。 - 使用事务。 将你的
DELETE操作包装在BEGIN TRANSACTION块中。这允许你在出现错误时进行ROLLBACK(回滚)删除操作。
-- 步骤 1:验证即将删除的数据SELECT * FROM Customers WHERE Age > 30;
-- 步骤 2:在事务中执行删除操作BEGIN TRANSACTION;
DELETE FROM Customers WHERE Age > 30;
-- 您可以在此处执行其他检查。-- 如果一切正确,则提交。-- COMMIT;-- 如果出现问题,则撤销。-- ROLLBACK;