DROP,TRUNCATE,DELETE三者的区别!!!(面试的时候问到频率比较高的)
2010-07-14 09:56
525 查看
DROP:
DLL:data definition language-数据定义语言
操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. drop语句将表所占用的空间全部释放 .
TRUNCATE:
DLL:data definition language-数据定义语言
操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,只在事务日志中记录页的释放。 truncate 语句缺省情况下表空间释放到 minextents个 extent,除非使用reuse storage;
DELETE:
DML:Data Manipulation Language-数据操作语言
操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
DELETE 不带WHERE 子句删除表中的所有数据. DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。不影响表所占用的extent, 高水线(high watermark)保持原位置不动 .
以下情况是TRUNCATE无法代替DELETE
1、要保留标识的情况下不能用 TRUNCATE TABLE,因为 TRUNCATE TABLE 会重置标识。
2、需要使用触发器的情况下不能使用 TRUNCATE TABLE ,它不会激发触发器。
3、对于由 FOREIGN KEY 约束引用的表(即主键所在的表,不是外键所在的表)不能使用 TRUNCATE TABLE。
4、对于参与了索引视图的表不能使用 TRUNCATE TABLE ,注意指索引视图,并非普通视图。
执行速度:
DROP>TRUNCATE>DELETE
DLL:data definition language-数据定义语言
操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. drop语句将表所占用的空间全部释放 .
TRUNCATE:
DLL:data definition language-数据定义语言
操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,只在事务日志中记录页的释放。 truncate 语句缺省情况下表空间释放到 minextents个 extent,除非使用reuse storage;
DELETE:
DML:Data Manipulation Language-数据操作语言
操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
DELETE 不带WHERE 子句删除表中的所有数据. DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。不影响表所占用的extent, 高水线(high watermark)保持原位置不动 .
以下情况是TRUNCATE无法代替DELETE
1、要保留标识的情况下不能用 TRUNCATE TABLE,因为 TRUNCATE TABLE 会重置标识。
2、需要使用触发器的情况下不能使用 TRUNCATE TABLE ,它不会激发触发器。
3、对于由 FOREIGN KEY 约束引用的表(即主键所在的表,不是外键所在的表)不能使用 TRUNCATE TABLE。
4、对于参与了索引视图的表不能使用 TRUNCATE TABLE ,注意指索引视图,并非普通视图。
执行速度:
DROP>TRUNCATE>DELETE
相关文章推荐
- drop,truncate ,delete三者的区别
- SQL面试基本题:delete,truncate,drop 区别
- truncate、delete、drop三者的区别
- PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较(概念)
- drop、delete和truncate三者的区别
- 【转】PLSQL_标准删除的方式Delete/Drop/Truncate区别和比较
- sql中delete,drop ,truncate三者的区别
- 数据库:drop、truncate、delete三者删除的区别
- delete , truncate , drop三者的区别所在
- 每天两道oracle笔试题+第九天:1、比较truncate和delete命令的区别?2、如果必须利用备份恢复数据库,但此时没有控制文件,如何应对?
- 深度分析DROP,TRUNCATE与DELETE的区别【我的数据库之路系列】
- SQL truncate 、delete与drop区别
- 数据库删除语句 Drop/Delete/Truncate比较
- Drop、Truncate和Delete的区别
- sql truncate 、delete与drop区别
- truncate 、delete与drop区别
- 数据库删除语句 Drop/Delete/Truncate比较
- Sql语句中的truncate,delete,drop的区别
- Truncate Delete Drop 的区别以及 高水位HWM
- MySQL 中 truncate、delete、drop 的区别