oracle数据库删除数据的两种方式

当表中的数据不须要是,则应该删除该数据,并释放所占用的空间; 删除表中的数据有delete和truncate两种方式,下面分别介绍;

1、delete语句ide

(1)有条件删除spa

   语法格式:delete [from]  table_name  [where condition];日志

如:删除users表中的userid为‘001’的数据:delete from users where userid='001';orm

(2)无条件删除整个表数据事务

     语法格式:delete  table_name;资源

如:删除user表中的全部数据:delete users ;it

    
2、truncate语句   io

    使用truncate是表示删除表中全部的数据;table

   

语法格式: Truncate [table]  table_name;class

(1)删除全部记录不保留记录占用空间

     Truncate [table]  table_name  [drop storage];

    如:删除users表中的全部数据并不保存占用空间: Truncate table users drop storage; 因为默认使用drop storage关键字,因此能够省略 drop storage;

(2)删除全部记录保留记录占用空间

     Truncate [table]  table_name  [reuse storage];

     如:删除users表中的全部数据并保存占用空间: Truncate table users reuse storage;

    

3、两种删除语句的对比

      因为delete语句删除记录时候,记录是逐条删除的,而Truncate 语句删除数据时不产生回退信息;因此若是须要删除大量数据的时候使用delete则占用较多的系统资源,而若是使用Truncate 则会快的多。

            TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:两者均删除表中的所有行。

            但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

             DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
            TRUNCATE TABLE 经过释放存储表数据所用的数据页来删除数据,而且只在事务日志中记录页的释放。

 
TRUNCATE,DELETE,DROP放在一块儿比较:
            TRUNCATE TABLE:删除内容、释放空间但不删除定义。
            DELETE TABLE:删除内容不删除定义,不释放空间。
            DROP TABLE:删除内容和定义,释放空间。