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