SQL

SQL 知识量:22 - 44 - 129

16.2 删除数据><

删除数据- 16.2.1 -

从一个表中删除数据,应当使用delete语句,有两种使用方式:

  • 从表中删除特定的行。

  • 从表中删除所有行。

在操作时,一定要注意,千万不要省略where子句,否则就是删除所有的行。

例如:删除person表中所有男性信息。

delete from person where sex='male';

删除后的person表变为:

+----+----------+---------+--------+
| id | realName | realAge | sex    |
+----+----------+---------+--------+
|  1 | Susan    |      12 | female |
|  5 | Jen      |      12 | female |
|  8 | Alice    |      12 | female |
| 10 | Ella     |      12 | female |
| 13 | Soen     |      16 | NULL   |
+----+----------+---------+--------+

需要注意的是:

  • delete删除的是表中的数据,但不删除表本身。

  • 删除操作是十分危险的操作,应当十分谨慎。可以通过设置外键约束的方式对表内容的完整性进行保护。

如果要更快的删除表中所有行,即清空表中数据,不要使用delete,可以使用truncate table语句,它的效率更高,因为不需要记录数据变动情况。例如:清空person表。

truncate table person;

truncate table与delete在清空表方面的最大区别是:使用truncate table删除表中的数据后,自动增加字段的默认初始值将重置,也就是将重新从1开始计数;而使用delete删除表中所有行后,自动增加字段的值,将根据删除前该字段的最大值继续计数。

更新和删除操作的原则- 16.2.2 -

使用update和delete时应当注意以下原则:

  • 除非真的需要更新和删除所有行,否则不要省略where子句。

  • 确保每个表都有主键,依据主键进行更新和删除更加安全。

  • 在更新和删除前,应当使用select语句进行测试,确保语句是你想要的效果。

  • 使用强制实施引用完整性约束的数据库,可以避免错误删除其数据与其他表相关联的行。

  • 使用update和delete时,一定要小心小心再小心!