首页 技术 正文
技术 2022年11月23日
0 收藏 545 点赞 3,898 浏览 653 个字

语法:

  • 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子句
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,987
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,503
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,347
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,130
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,765
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,842