截断语句后表结构保持不变,只删除记录(使用自动提交)。那么truncate是DDL语句的原因是什么?
答案 0 :(得分:8)
我在这里添加一些解释: 默认情况下,截断表时,您不仅要删除行,还要隐含地告诉Oracle数据库还要执行以下任务:
除了MINEXTENTS存储参数
指定的行之外,释放已删除行使用的所有空间将NEXT存储参数设置为截断过程从段中删除的最后一个范围的大小
因此,它通过重置水高标记来更改存储定义并更改表的结构。
它也不能成为DML,对吧? Where子句不能被指定或与DDL语句一起出现。如果truncate是DML语句,则Oracle允许我们将truncate与where子句一起使用 注意:SQL中的WHERE子句指定SQL数据操作语言(DML)语句应仅影响满足指定条件的行。
答案 1 :(得分:7)
TRUNCATE
重置表格的高水位线,有效地消除了之前存在的所有行。将其作为DDL语句处理允许它超快,因为它允许它在不保留DML语句之类的撤销(回滚)信息的情况下运行。
答案 2 :(得分:4)