博客
关于我
Oracle面试题:Oracle中truncate和delete的区别
阅读量:794 次
发布时间:2023-02-26

本文共 922 字,大约阅读时间需要 3 分钟。

Truncate 和 Delete 是两种常用的数据库操作,各有不同的特点和使用场景。以下从多个方面对它们进行对比分析。

1. 操作类型区别

Truncate 是 DDL 语句,而 Delete 是 DML 语句。DDL 语句主要用于定义和修改数据结构,而 DML 语句则用于操作数据。

2. 执行速度

Truncate 的执行速度通常比 Delete 快得多。Delete 操作在执行时会将表中的数据复制到回滚表空间,这会导致在数据量较大时,操作时间变长。而 Truncate 则直接删除数据,不会涉及到回滚表空间的操作。

3. 数据恢复能力

Delete 操作支持回滚,具体来说,如果在执行 Delete 时未完成,可以通过回滚操作恢复数据。而 Truncate 操作是一次性永久删除数据,无法恢复。

4. 触发机制

Truncate 操作不会触发表上的 Delete 触发器,而 Delete 操作执行时会正常触发相关的触发器。

5. WHERE 子句支持

Delete 语句支持带 WHERE 子句,可以指定特定行进行删除,这使得操作更加灵活。而 Truncate 不能带 WHERE 子句,只能一次性删除所有数据。如果需要删除部分数据,建议在 Delete 语句中添加 WHERE true 条件以避免自增字段重置。

6. 高水位线影响

Truncate 操作会重置表的高水位线(High Water Mark),这意味着在执行 Truncate 后,表将从零开始写入新数据。而 Delete 操作不会改变高水位线。

7. 对视图的操作

Delete 操作可以直接对视图进行操作,而 Truncate 操作不能对视图执行,操作对象必须是实际的表。

小结

Truncate TABLE 操作与 Delete 的主要区别在于操作方式和影响。Truncate 是一次性删除所有数据的操作,不会记录单独的删除操作,且不会激活相关的删除触发器。其执行速度较快,但删除的数据无法恢复。Delete 操作则更加灵活,支持通过 WHERE 子句选择需要删除的记录,并可以执行回滚操作恢复未完成的删除。因此,选择使用哪种操作取决于具体的业务需求和场景。

转载地址:http://igpfk.baihongyu.com/

你可能感兴趣的文章
oracle scott趣事
查看>>
oracle script
查看>>
Oracle select表要带双引号的原因
查看>>
Oracle SOA Suit Adapter
查看>>
Oracle Spatial GeoRaster 金字塔栅格存储
查看>>
Oracle spatial 周边查询SQL
查看>>
Oracle Spatial空间数据库建立
查看>>
UML— 活动图
查看>>
oracle sqlplus已停止工作,安装完成客户端后sqlplus报“段错误”
查看>>
oracle SQLserver 函数
查看>>
Oracle Statspack分析报告详解(一)
查看>>
oracle tirger_在Oracle中,临时表和全局临时表有什么区别?
查看>>
Oracle Validated Configurations 安装使用 说明
查看>>
oracle where 条件的执行顺序分析1
查看>>
oracle 中的 CONCAT,substring ,MINUS 用法
查看>>
Oracle 中的 decode
查看>>
oracle 使用 PL/SQL Developer创建表并插入单条、多条数据
查看>>
oracle 使用leading, use_nl, rownum调优
查看>>
oracle 修改字段类型方法
查看>>
Oracle 修改数据库表数据提交之后进行回滚
查看>>