删除表和截断表命令之间的区别?  

  表删除包括表的定义和关联对象(规则、索引、约、触发器、主键,等)。很明显,一旦表被删除,那么表中包含的所有的数据行都会被一同删除。   

  truncate 命令则仅仅删除了表中所有的数据行。表的结构和所有的索引仍然继续存在,直到你输入删除表的命令(如上所述)。绑定到列上的规则、默认值、约束仍然继续绑定,并且触发器也仍然起作用。

  截断表命令还会回收所有索引的分配页。   

  截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。delete(删除) 一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的拥有者可以截断表。

你可能感兴趣的:(Oracle)