Truncate、Drop、Delete的区别与用法

SQL语句中删除资料的几种方式

今日在删除数据时,发现除了常用的Delete & Drop语句之外,还有Truncate也是与删除数据相关的,针对上述三种有进行简单的比较与整理

1)从删除机制上来看
把table当作黑板,数据当作黑板上的文字
写满内容的黑板

Delete:逐行删除数据,相当于用黑板擦一行一行的擦黑板

Drop:删除整个表,相当于直接把黑板扔掉

Truncate:清空表空间内的数据,相当于把原先写有数据的黑板扔掉,重新换上了一块和原来一样的黑板(表结构一样)

2)差异性:
Delete的数据是可以RollBack
因为删除的机制是每次删除一行数据,并且将对应的删除动作记录在日志中,以便于进行回滚的操作

语言类型是DML(数据库操作语言),提交后会先将动作进行记录,需要commit后才能生效
Drop & Truncate是DLL(数据库定义语言),操作会立即生效,且无法进行回滚

3)从速度上来看:Drop>Truncate>Delete

4)从范围上来看
Delete的对象Table & View,但是Truncate的对象Table

用法:
Delete:

  • 删除部分数据(部分列,且需要带上where语句)
  • 与事物相关,触发trigger

Drop:

  • 删除所有的数据,但是保留表的结构

Truncate

  • 直接删除整个表或者整个Database

猜你喜欢

转载自blog.csdn.net/yingdovezuo/article/details/84876539
今日推荐