DROP TABLE、TRUNCATE TABLE和DELETE的区别
相同点
TRUNCATE
TABLE
和DELETE
都可以删除整个数据库表的记录
不同点
DELETE
DML语言
可以回退
可以有条件的删除
DELETE FROM 表名 WHERE 条件
TRUNCATE TABLE
DDL语言
无法回退
默认所有的表内容都删除
删除速度比delete快
TRUNCATE TABLE 表名
DROP TABLE
用于删除表(表的结构、属性以及索引也会被删除);
DROP TABLE 表名
原理
DDL(Data Definition Language)数据定义语言,DML(Data Manipulation Language)数据操作语言。
- TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而TRUNCATE则不会被撤销。
- TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
- TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比Delete操作后的表要快得多。
- TRUNCATE不能触发任何Delete触发器。
- 当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
- 不能清空父表。
优化
在数据库里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。
因为数据库有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样。
转载于:https://www.cnblogs.com/lanbosm/articles/8714688.html
DROP TABLE、TRUNCATE TABLE和DELETE的区别相关推荐
- DROP TABLE, TRUNCATE TABLE, DELETE TABLE 三种删除语句的区别
1.DROP TABLE 清除数据并且销毁表,是一种数据库定义语言(DDL Data Definition Language), 执行后不能撤销,被删除表格的关系,索引,权限等等都会被永久删除. 2. ...
- 【MySQL】DROP TABLE, TRUNCATE区别
DROP TABLE, TRUNCATE TABLE, DELETE TABLE 三种删除语句的区别 1.DROP TABLE 清除数据并且销毁表,是一种数据库定义语言(DDL Data Defini ...
- Oracle truncate table 与 delete tabel的区别(转)
Oracle truncate table 与 delete tabel的区别(转) 一. 1.delete产生rollback,如果删除大数据量的表速度会很慢,同时会占用很多的rollback se ...
- SQL中truncate table和delete的区别
truncate table table_namedelete from table_namedrop table table_name truncate table在功能上与不带where子句的de ...
- drop table 和 truncate table的区别
DROP TABLE 和 TRUNCATE TABLE 都是用来删除表的操作,但是它们的区别在于: DROP TABLE 是将整个表从数据库中删除,不可恢复. TRUNCATE TABLE 删除表中的 ...
- truncate table语句和delete table语句的区别
truncate table 表名 ; delete from 表名; 都是用来删除表中所有的记录,前者删除数据后表的标识列会重新开始编号,它比delete语句使用的系统资源和事务日志资源更少,但是表 ...
- TRUNCATE TABLE 与 DELETE在删除整个表的所有记录时的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.DELETE・DML语言・可以回退・可以有条件的删除・不能触发任何Delete触发器・当表被清空后表和表的索引讲重新设置成 ...
- Mybatis的truncate table方法与SQL语句delete的区别
假如我们现在有一张表,需要清空表里面的数据: 首先,我们可以使用SQL语句delete from+表名称来执行SQL语句来执行删除功能! 代码演示如下: Idea不推荐我们的SQL语句不加Where来 ...
- Mysql之drop、truncate和delete的区别
一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...
最新文章
- Win10家庭版如何启用本地组策略
- NSURLConnection和NSRunLoop
- 显卡安装一直循环在登录界面——解决之-T450安装显卡驱动和cuda7.5发现的一些问题...
- 20162303 2016-2017-2 《程序设计与数据结构》第五周学习总结
- canoe开发从入门到精通pdf_阿里技术官手写801页PDF《精通Java Web整合开发》
- boost::histogram::detail::static_if用法的测试程序
- 第一百五十二期:白话Entity Framework Core数据验证
- 对话MathWorks:解读MATLAB技术生态圈与未来趋势
- 【JMeter】Threads(users)3种类型
- 作者:黎建辉(1973-),男,中国科学院计算机网络信息中心研究员、博士生导师...
- 清空image画布并改变大小填充背景色
- Identity Mappings in Deep Residual Networks2016【论文理解】
- 干掉visio,这个画图神器太香了
- Mysql绿色版本安装
- OriginPro中三维图片旋转
- so easy(并查集)
- 基于WebSocket和Redis实现Bilibili弹幕效果
- Python批量复制一个文件夹中的全部excel数据并粘贴至一个excel文件中-openpyxl模块
- AI TIME PhD实验室专场,四月隆重登场!
- Could not delete path ‘D:\AndroidStudioProjects\LargeScreen\app\build\generated\source\r\debug\andro