TRUNCATE DELETE
某日递简历,顺便和面试官亲密接触,被问及上面三个数据库操作的异同,用过delete,drop未用过truncate,网页搜索,初步认识。
DELETE
SQL> SELECT COUNT(*) FROM emp;COUNT(*) ----------14SQL> DELETE FROM emp WHERE job = 'CLERK';4 rows deleted.SQL> COMMIT;Commit complete.SQL> SELECT COUNT(*) FROM emp;COUNT(*) ----------10
TRUNCATE
SQL> TRUNCATE TABLE emp;Table truncated.SQL> SELECT COUNT(*) FROM emp;COUNT(*) ----------0
DROP
SQL> DROP TABLE emp;Table dropped.SQL> SELECT * FROM emp; SELECT * FROM emp* ERROR at line 1: ORA-00942: table or view does not exist
DROP and TRUNCATE are DDL commands, whereas DELETE is a DML command. Therefore DELETE operations can be rolled back (undone), while DROP and TRUNCATE operations cannot be rolled back.
貌似在oracle中delete可以回滚,sql server是不是可以用事务实现。
1.truncate和不带where子句的delete, 以及drop都会删除表内的数据。
2.drop,truncate都是DDL(数据定义语言)语句,执行后会自动提交。
4.速度,一般来说: drop> truncate > delete
drop,truncate都是DDL(数据定义语言)语句,执行后会自动提交
1.DELETE ・DML语言 ・可以回退 ・可以有条件的删除 DELETE FROM 表名 WHERE 条件 2.TRUNCATE TABLE ・DDL语言 ・无法回退 ・默认所有的表内容都删除 ・删除速度比delete快。 TRUNCATE TABLE 表名
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而TRUNCATE则不会被撤销。 2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。 3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比Delete操作后的表要快得多。 4、TRUNCATE不能触发任何Delete触发器。 5、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。 6、不能清空父表。 在oracle里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。 因为oralce有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样。
转载于:https://www.cnblogs.com/forfutureofK-K/archive/2012/11/30/2795745.html
TRUNCATE DELETE相关推荐
- MySql中truncate,delete,drop的异同点
truncate,delete,drop的异同点 注意:这里说的delete是指不带where子句的delete语句 相同点:truncate和不带where子句的delete, 以及drop都会删除 ...
- Mysql的drop/truncate/delete
drop > truncate > delete drop删除结构与数据 truncate删除表的所有数据,不可恢复 delete有条件删除数据,可以恢复
- truncate delete 与 drop的区别
一张表几亿条数据.根据task_id删除几千万. delete删除后查询,发现查询速度还是没有变快.explain查看 rows并没有发生变化.查询速度肯定也不会变化.原因? truncate del ...
- truncate,delete,drop的异同点
源:网海拾贝 truncate,delete,drop的异同点 看重:这里说的delete是指不带where子句的delete语句 相反点:truncate和不带where子句的delete ...
- drop truncate delete区别
在实际应用中,三者的区别是明确的. 当你不再需要该表时, 用 drop; 当你仍要保留该表,但要删除所有记录时, 用 truncate; 当你要删除部分记录时(always with a WHERE ...
- TRUNCATE,DELETE,DROP的区别
https://zhidao.baidu.com/question/171481100.html TRUNCATE 清空数据和数据占用空间 不删除表结构 DELETE 清空数据,不 ...
- Oracle中删除表(drop,truncate,delete)
drop命令 drop table 表名:例如:删除商品表 drop table commodity:注意:1.用drop删除表数据,不但会删除表中的数据,连表结构也被删除了! truncate命令 ...
- mysql truncate delete 释放磁盘空间
我的mysql一张表中有1000万条记录,我使用delete删除记录后,虽然表为空,但是我使用navicate打开表时,加载还是很慢.于是我执行下truncate,打开就很快了.网上查下作者这样说的: ...
- 有关 drop delete truncate 问题
drop 可以删除数据库 数据表 数据表中字段 delete 删除数据表中的行 而不删除数据表 可以删除一行: Delete from 表 where 列名称=值 或是多行: Delete from ...
最新文章
- oracle plsql开启并行,Oracle开启并行的几种方法
- 嫦娥“挖土”归来有多难?看看中国首颗返回式卫星的故事
- Cacti 每日导出图形及流量报表 [未完成]
- JDK环境变量配置(一次性成功)
- java xml转map_java练习本(原每日一练)(20190514)
- 游戏工委:已有63家单位响应防止未成年人沉迷通知
- 一键提取app源码_【补发】自动答题脚本教程及源码分享(无视分辨率)
- 超强 | 保险单据在线OCR,秒速识别保单信息
- 客户端session与服务端session
- Scratch-贪吃蛇小游戏
- VS2019配置WinPcap开发
- 技术团队管理经验总结(持续更新)
- XML学习记录(归纳总结,方便查看)
- 从网线到网络设备是如何工作的
- [系统控件重绘教程(一)]重绘NSWindow
- android应用程序设计_UED干货 | 一篇文章知晓小程序设计
- NoSQL 一致性[详解]更新一致性
- 触动精灵 python_触动精灵远程Log模块
- 股票自动委托下单html,股票怎么设置自动挂单?股票交易挂单规则
- 国标、行标、地标、团标、企标
热门文章
- ubuntu 13.04 mysql_Ubuntu 13.04 MySQL Proxy安装与配置
- websocket java8_Java API For WebSocket(八)服务器安全
- 数据库设计三大范式应用实例剖析(讲得比较清楚)
- Linux常用命令(掌握完操作Linux基本就够用了)
- Docker基础学习笔记01:Docker安装
- 【BZOJ2959】【codevs2002】长跑,维护双联通分量
- java spi与api,SPI和API之间的区别?
- horizon服务主要模块_openstack七大模块概述
- 2017.9.20 cheat 失败总结
- 【英语学习】【WOTD】thole 释义/词源/示例