语法:

  • truncate table 表名
  • delete from 表名
  • drop table 表名

应用范围:

  • truncate 只能对表,且不能用于参与了索引的表,不能用于外键约束引用的表
  • delete 可以是表或视图

区别:

  • truncate和delete只删除表中的数据,保留数据表结构
  • drop则删除整张表。被依赖的约束(constrain)、触发器(trigger)、索引(index)也都被删除;依赖于该表的存储过程/函数将保留,但是变为invalid状态

删除速度:

  • drop > truncate > delete
  • delete的效果有点像将mysql表中所有记录一条一条删除到删完
  • truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表

可恢复性:

  • delete删除的数据存储在系统回滚段rollback segment中,需要的时候,数据可以回滚恢复
  • truncate删除的数据不可恢复,删除速度非常快

是否触发trigger:

  • delete是dml,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发
  • truncate和drop是ddl,操作立即生效;操作不触发trigger

对自增字段的影响:

  • delete之后,重新插入数据,带有自增字段的列仍保留原来的最大值
  • truncate之后,从头开始计数

建议:

  • 想删除整张表,用drop
  • 想保留表,而删除所有数据:1.和事务无关,用truncate   2.和事务有关,或者想触发trigger,用delete
  • 想删除部分数据行,用delete,注意带上where子句

truncate、delete、drop区别的更多相关文章

  1. TRUNCATE DELETE DROP 区别

    TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源 ...

  2. SQL truncate/delete/drop 区别

    相同点 1. truncate 和不带 where 子句的 delete 以及 drop 都会删除表内的数据. 2. drop/truncate 都是 DDL 语句(数据定义语言),执行后会自动提交. ...

  3. MySQL——delete 和 truncate 以及 drop 区别

    delete 和 truncate 以及 drop 区别 (个人理解,如有错误,请指出) delete < truncate < drop 删除方式: truncate  只删除数据.逐条 ...

  4. Sybase:delete与truncate、drop区别

    Sybase:delete与truncate.drop区别 区别: TRUNCATE TABLE TABLENAME:删除内容.释放空间但不删除定义. DELETE FROM TABLENAME:删除 ...

  5. truncate,delete,drop的异同点

    说明:本文摘自oracle技术用户讨论组 truncate,delete,drop的异同点  注意:这里说的delete是指不带where子句的delete语句    相同点:truncate和不带w ...

  6. sql 删除表数据truncate delete drop的区别

    已下内容为转载内容:学习之用 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. ...

  7. (转)iOS sqlite :truncate/delete/drop区分

    转自:http://blog.sina.com.cn/s/blog_6755689f0101fofb.html 相同点: 1.truncate和不带where子句的delete.以及drop都会删除表 ...

  8. drop、truncate和delete的区别

    TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源 ...

  9. truncate table,drop,delete的区别

    TRUNCATE TABLE 在功能上与不带 Where 子句的 Delete 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 Delete 速度快,且使用的系统和事务日志资源 ...

  10. SQL-truncate && delete && drop 的区别

    有些人在删除表的所有记录的时候,喜欢这样来——不给DELETE 语句提供WHERE 子句,表中的所有记录都将被删除.但这种方法是不可取的,正确的应该使用 TRUNCATE TABLE tb_name ...

随机推荐

  1. JDBC 增、改、删 MySQL中的表

    在数据库test里先创建表school,内容如下 通过JDBC增加第五人tom,修改他的生日,最后删除tom import java.sql.Connection; import java.sql.D ...

  2. springcloud的turbine集成zookeeper

    1.turbine监控界面显示一直是loading的状态,如何解决 http://blog.didispace.com/spring-cloud-tips-4/ 2.通过追踪turbine的依赖可以看 ...

  3. tar压缩解压文件

    查看visualization1.5.tar.gz 压缩包里面的内容: $ tar -tf visualization1.5.tar.gz 解压指定文件JavascriptVisualRelease/ ...

  4. Luogu P2617 Dynamic Rankings

    带修主席树的模板,因为状态不好所以敲了很长时间,不过写完感觉能更好地理解主席树了. 核心其实就是树状数组套主席树,维护方法不再是以前的那种一步一修改,而是对于树状数组上的每一个点建立一棵权值线段树,然 ...

  5. (链表 递归) leetcode 24. Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. You may not modify the value ...

  6. ajax请求封装函数

    写封装函数的套路 1.先写出这个函数原来的基本用法 2.写一个没有形参空函数,将上一步的代码直接作为函数体, 3.根据使用过程中,抽象出来需要变的东西作为形参 function ajax (metho ...

  7. pstack跟踪进程栈

    一:简介 这个命令可以显示每个进程的栈跟踪.pstack命令必须由相应进程的宿主或root运行.可以使用pstack来确定进程挂起的位置.此命令允许使用唯一选项就是进程的PID 这个命令在排查进程问题 ...

  8. cmd解压压缩包

    需要安装有winrar start winrar x C:\Users\systme\Desktop\xxx.rar c:\123

  9. 学习笔记(node.js)

    因为做的笔记太多了,所以就直接发到百度云盘了. 第一天:是关于环境的配置,以及简单的练习. 云盘链接地址:链接:https://pan.baidu.com/s/1WLWtyTKWaQ32JpDUCF2 ...

  10. angular 中自己常用的下拉框获取值方法

    方法一 HTML页中 <select name="" id="if02" data-first-option="true" (chan ...