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

一、delete语句

(1)有条件删除

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

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

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

     语法格式:delete  table_name;

如:删除user表中的所有数据:delete users ;

    
二、truncate语句   

    使用truncate是表示删除表中所有的数据;

   

语法格式: Truncate [table]  table_name;

(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;

    

三、两种删除语句的对比

      由于delete语句删除记录时候,记录是逐条删除的,而Truncate 语句删除数据时不产生回退信息;所以如果需要删除大量数据的时候使用delete则占用较多的系统资源,而如果使用Truncate 则会快的多。

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

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

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

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