数据库(如:MySQL等)做为存储数据的一种载体,在网站开发过程中有着不可替代的作用。接触过数据库的人,对CURD这个词应该都不会陌生。对于没接触过数据库的人来说,这里就有必要解释一下CURD这个“新名词”了。
数据库(如:MySQL等)做为存储数据的一种载体,在网站开发过程中有着不可替代的作用。接触过数据库的人,对CURD这个词应该都不会陌生。对于没接触过数据库的人来说,这里就有必要解释一下CURD这个“新名词”了。
CURD定义了用于处理数据的基本原子操作,是数据库技术中的缩写词。它代表了四种操作:创建(create)、更新(update)、读取(read)和删除(delete)操作。
为什么要引出这个新名词,原因在于在这四种操作中,数据库的删除往往是一项非常危险的操作。
对于这种危险操作,网络上流传着这样一个段子:
如果你在一个以数据为基础的互联网公司上班,一不小心误删了网站的数据库并且无法恢复时。这时的你可以连辞职报告都不用写,就可以直接跑路了。
回到正题,数据库的删除往往我们会用到drop、truncate、delete这三个关键字,但是,很多人往往搞不清这三者之前的区别。对于这些糊里糊涂的人,操作之后往往会带来一些非常严重的后果。
drop
用于删除数据库、数据表、数据表字段
用法如下:
- drop database 数据库名; # 删除数据库
- drop table 数据表名; # 删除数据表
- alter table 数据表名 drop column 字段名; # 删除数据表字段
truncate
删除数据表中的数据
用法如下:
- truncate table 数据表名; # 清空数据表中的数据
注:
1、truncate table不同于drop table,前者用于清空数据表,后者是删除数据表;
2、truncate table语句是一种快速、无日志记录的操作方法;
3、truncate table清空表后,表和表的索引将被重新设置成初始大小;
4、truncate table语句与不含有where条件句的delete语句在功能上相同。但truncate table语句速度更快且使用更少的系统资源和事务日志资源。
delete
删除数据表中的指定行,未指定where条件句则清空该数据表
用法如下:
- delete table 数据表名; # 清空数据表中的数据
- delete table 数据表名 where 条件; # 删除满足条件的行
注:
1、delete每次删除一行会在事务日志中为所删除行记录一项;
2、delete清空表后,表和表的索引不会被重新设置成初始大小。
综上所述,我们可以得出一个删除数据的速度排序,一般来说: drop优于truncate优于delete。