SQL中drop,delete和truncate的异同
相同点:
truncate 和不带 where 子句的 delete,以及 drop 都会删除表内的数据
不同点:
1. truncate 和 delete 只删除数据不删除表的结构(定义)
drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger)、索引(index);依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。
2. delete 语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
truncate、drop 是数据库定义语言(ddl),操作立即生效,原数据不放到 rollback segment 中,不能回滚,操作不触发 trigger。
3.delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动
显然drop 语句将表所占用的空间全部释放。
truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。
4.速度,一般来说: drop> truncate > delete
5.安全性:小心使用 drop 和 truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用 delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop
想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
转自:http://ourmysql.com/archives/151
SQL中drop,delete和truncate的异同相关推荐
- SQL语法中drop,delete与truncate的区别
SQL语法中drop,delete与truncate的区别 delete是DML语句,可以选择删除部分数据,也可以选择删除全部数据:删除的数据可以回滚:不会释放空间 drop是DDL语句,删除表结构和 ...
- 详解SQL中drop、delete和truncate的异同
第一:相同点: truncate和不带where子句的delete,以及drop 都会删除表内的数据 第二:不同点: 1. truncate和delete只删除数据不删除表的结构(定义) dr ...
- oracle恢复drop建的表首次,Oracle中Drop,Delete,Truancate表恢复
Oracle中Drop,delete,truancate表恢复 oracle中,常常会由于一些失误导致表的删除,以下是我写的一些表恢复的方法. 闪回模式得满足条件(启用闪回区和启用归档): 1.检查是 ...
- MySQL中(delete、truncate、drop) 的区别
delete.truncate.drop的用法 MySQL 数据表中delete删除数据的通用语法: ###删除 students_tbl 表中 student_id 为3 的记录: delete f ...
- 【SQL】DELETE 和 TRUNCATE 的 异同点
从逻辑上说,TRUNCATE 语句与 DELETE 语句作用相同,但是在某些情况下,两者在使用上有所区别. DELETE 是 DML 类型的语句:TRUNCATE 是 DDL 类型的语句.它们都用来清 ...
- SQL中drop table语句删除数据表
- SQL中删除数据,保留表结构。
truncate和delete的区别 在SQL中,delete能快速删除数据表中所有记录,但保留数据表结构的语句是Truncate. 使用Truncate删除所有行,该语句总是比不带条件的DELETE ...
- SQL Server中drop、truncate和delete语句的用法
SQL Server中drop.truncate和delete语句的用法 drop 删除表和表中的所有数据(不保留表的结构) drop table tablename truncate 删除表中 ...
- oracle中drop、delete和truncate的区别
oracle中drop.delete和truncate的区别 oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表,网上有许多文章和教程专门讲解了它们之间的异同,我 ...
- MySQL数据库中的删除命令:delete、truncate、drop
MySQL删除数据的方式都有哪些? 咱们常用的三种删除方式:通过 delete.truncate.drop 关键字进行删除:这三种都可以用来删除数据,但场景不同. 一.从执行速度上来说 drop &g ...
最新文章
- Mysql5.6主从复制-基于binlog
- python面向对象设计模式_python面向对象之设计模式
- nginx如何处理php请求,Nginx是如何处理HTTP请求的
- 数据库(MySQL)
- 清除浮动的方法总结CSS实现水平垂直居中方法总结
- android 7.1 apk的systemuid [2]
- php 伪静态规则,在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则...
- ASP.NET 使用Ajax
- 2020 年告别办公室!
- Grunt安装与入门
- hashmap的负载因子为什么是0.75而不是其他值或者1
- TCP发送接收数据2
- 【王道考研】计算机网络知识点
- WEB打印插件Lodop
- 手机修改ntp服务器地址,手机修改ntp服务器ip地址
- 计算机病毒 爱虫病毒(lovebug),有哪些是典型计算机病毒
- MATLAB运行程序后workspace是空的
- 用Moment.js 计算两个时间直接的间隔
- 【五一专属活动】向所有热爱分享的“技术劳动者”致敬
- python相册排版_Python3一键排版证件照(1寸照、2寸照) | 原创
热门文章
- 三、Java NIO Buffer
- 只更新服务器代码有变更的文件,签出TFS 2010变更集中的文件(check out files in TFS 2010 changeset)...
- surfacert能跑java么_不怕天气糟糕 出行全靠Surface来帮忙
- 完整的连接器设计手册_工业连接器如何选型
- MATLAB | 好看的相关系数矩阵图绘制
- energy plus matlab,EnergyPlus EMS和ExternalInterface入门学习 [第一篇——简介]
- 小管家进销存 v3.1 bt
- 分布式系统与海量数据处理
- Eclipse快捷键的设置和使用(大小写快捷键等)
- php递归算法获取树形菜单数据TreeMenu代码实现