当表中的数据不须要是,则应该删除该数据,并释放所占用的空间; 删除表中的数据有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:删除内容和定义,释放空间。