truncate和delete的区别
truncate和 delete只删除数据不删除表的结构(定义) ; drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
2、truncate不能进行回滚操作。
3、truncate不触发任何delete触发器。
5、当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。
6、不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。
小结:
TRUNCATE TABLE 则一次性地从表中删除所有的数据页并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
DELETE语句可以通过WHERE对要删除的记录进行选择。而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。如果DELETE不加WHERE子句, DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。如果一个表中有自增字段,使用TRUNCATE TABLE和没有WHERE子句的DELETE删除所有记录后,这个自增字段将起始值恢复成1.如果你不想这样做的话,可以在DELETE语句中加上永真的WHERE,如WHERE 1或WHERE true。DELETE FROM table1 WHERE 1;
truncate和delete的区别相关推荐
- Mysql之drop、truncate和delete的区别
一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...
- 深度分析DROP,TRUNCATE与DELETE的区别【我的数据库之路系列】
深度分析DROP,TRUNCATE与DELETE的区别[我的数据库之路系列] 转载自:http://hi.baidu.com/bjn_wuming/blog/item/8b27a9af36ef26f6 ...
- MYSQL基本知识:TRUNCATE和DELETE的区别
目录 1.条件删除 2. 事务回滚 3. 清理速度 4. 高水位重置 MYSQL中TRUNCATE和DELETE都能够清理表中的数据,那它们的基本区别是什么呢? 1.条件删除 这个比较好理解,因为DE ...
- drop、truncate和delete的区别
drop.truncate和delete的区别 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TA ...
- mysql truncate drop_详解MySQL中DROP,TRUNCATE 和DELETE的区别实现mysql从零开始 | 很文博客...
不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该 ...
- 详解MySQL中DROP,TRUNCATE 和DELETE的区别
注意:这里说的delete是指不带where子句的delete语句 相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 ...
- [转载]drop、truncate和delete的区别
原文出处:http://blog.csdn.net/ws0513/article/details/49980547 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作 ...
- MySQL-删除表(drop、truncate、delete)区别
删除表 --xx是数据表的名字 drop table xx 作用:删除内容和定义,释放空间.简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表. drop table test,就是把 ...
- drop、truncate、delete的区别
1.drop.truncate.delete它们的用法是不同的 drop(丢弃数据): drop table 表名 ,直接将表都删除掉,在删除表的时候使用. truncate (清空数据) : tru ...
最新文章
- 格式化json_在Spring Boot中格式化JSON日期
- linux 的基本命令
- Python打包方法基本应用方式介绍
- docker 网络 不好用 docker: Error response from daemon: failed to create endpoint jovial_wing on network b
- python 执行文件内容_python执行文件
- mongodb数组更新操作符$push
- mysql 8 sql server_终于将 SQL Server 成功迁移至 MySQL8.0 啦!!!
- java float存储方式_Java中小数的存储方式
- Pandas系列(七)Pandas数据排序
- Hibernate相关内容
- 基于WEB的本科毕业设计管理系统
- 开发idea插件教程
- qnx 设备驱动开发_一种QNX系统的USB驱动加载方法与流程
- jmeter计算测试QPS
- Java Runtime.exec() hangs
- 单调队列优化的DP问题
- openoffice安装及使用,linux文件资源下载及windows资源下载
- oracle erp和金蝶,什么是erp系统,集体和个人选择时有哪些不同
- FT2004(D2000)开发实战之AMD HD8570显卡驱动适配
- WMP11 官方简体中文版下载