数据库三种删除操作的区别

摘要

数据库(如:MySQL等)做为存储数据的一种载体,在网站开发过程中有着不可替代的作用。接触过数据库的人,对CURD这个词应该都不会陌生。对于没接触过数据库的人来说,这里就有必要解释一下CURD这个“新名词”了。

数据库(如:MySQL等)做为存储数据的一种载体,在网站开发过程中有着不可替代的作用。接触过数据库的人,对CURD这个词应该都不会陌生。对于没接触过数据库的人来说,这里就有必要解释一下CURD这个“新名词”了。

CURD定义了用于处理数据的基本原子操作,是数据库技术中的缩写词。它代表了四种操作:创建(create)、更新(update)、读取(read)和删除(delete)操作。

为什么要引出这个新名词,原因在于在这四种操作中,数据库的删除往往是一项非常危险的操作。

对于这种危险操作,网络上流传着这样一个段子:

如果你在一个以数据为基础的互联网公司上班,一不小心误删了网站的数据库并且无法恢复时。这时的你可以连辞职报告都不用写,就可以直接跑路了。

回到正题,数据库的删除往往我们会用到drop、truncate、delete这三个关键字,但是,很多人往往搞不清这三者之前的区别。对于这些糊里糊涂的人,操作之后往往会带来一些非常严重的后果。

drop

用于删除数据库、数据表、数据表字段

用法如下:

  1. drop database 数据库名; # 删除数据库
  2. drop table 数据表名; # 删除数据表
  3. alter table 数据表名 drop column 字段名; # 删除数据表字段

truncate

删除数据表中的数据

用法如下:

  1. truncate table 数据表名; # 清空数据表中的数据

注:

1、truncate table不同于drop table,前者用于清空数据表,后者是删除数据表;

2、truncate table语句是一种快速、无日志记录的操作方法;

3、truncate table清空表后,表和表的索引将被重新设置成初始大小;

4、truncate table语句与不含有where条件句的delete语句在功能上相同。但truncate table语句速度更快且使用更少的系统资源和事务日志资源。

delete

删除数据表中的指定行,未指定where条件句则清空该数据表

用法如下:

  1. delete table 数据表名; # 清空数据表中的数据
  2. delete table 数据表名 where 条件; # 删除满足条件的行

注:

1、delete每次删除一行会在事务日志中为所删除行记录一项;

2、delete清空表后,表和表的索引不会被重新设置成初始大小。

综上所述,我们可以得出一个删除数据的速度排序,一般来说: drop优于truncate优于delete。

shaw

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: