Skip to content

SQL DELETE

SQL DELETE 语句用于从数据库表中删除现有记录。

DELETE 语法

sql
DELETE FROM table_name
WHERE condition;
  • DELETE FROM:关键字,用于指定要删除记录的表
  • table_name:指定要删除记录的表名
  • WHERE:关键字,用于指定要删除的记录的条件
  • condition:指定要删除的记录必须满足的条件

示例

假设我们有一个名为 students 的表,包含以下数据:

idnameagegradegender
1张三19高三
2李四18高三
3王五19高三
4赵六16高一
5钱七18高三

示例 1:删除单个记录

删除 id 为 1 的学生记录:

sql
DELETE FROM students
WHERE id = 1;

执行结果:id 为 1 的学生记录被删除。

示例 2:删除多个记录

删除所有年级为高三的学生记录:

sql
DELETE FROM students
WHERE grade = '高三';

执行结果:所有年级为高三的学生记录被删除。

示例 3:删除所有记录

删除表中的所有记录:

sql
DELETE FROM students;

执行结果:students 表中的所有记录被删除,但表结构仍然存在。

注意事项

  1. WHERE 子句的重要性:在使用 DELETE 语句时,WHERE 子句非常重要,它指定了要删除的记录。如果省略 WHERE 子句,将删除表中的所有记录,这可能会导致意外的数据丢失。

  2. 性能考虑:删除大量记录时,可能会影响数据库性能,建议在非高峰时段执行大型删除操作。

  3. 事务处理:对于重要的删除操作,建议使用事务,以便在出现错误时可以回滚更改。

  4. TRUNCATE TABLE vs DELETE

    • DELETE 语句用于删除表中的记录,可以使用 WHERE 子句指定条件,删除操作会记录在事务日志中,支持回滚。
    • TRUNCATE TABLE 语句用于删除表中的所有记录,不能使用 WHERE 子句指定条件,删除操作不会记录在事务日志中,不支持回滚,但执行速度比 DELETE 快。
  5. 外键约束:如果表之间存在外键约束,删除记录时可能会受到限制。例如,如果一个表中的记录被其他表引用,可能需要先删除引用该记录的其他表中的记录,或者设置外键约束的级联删除选项。

小结

SQL DELETE 语句是从数据库表中删除现有记录的重要工具,通过指定条件,可以精确地删除所需的记录。在使用时,务必注意 WHERE 子句的正确使用,以避免意外删除所有记录。对于重要的删除操作,建议使用事务来确保数据的安全性。