1.不需要表格时,使用drop

   2.当您仍然需要保留表,但希望删除所有记录时,请使用truncate。

   3.当您想要删除一些记录时(总是带有where子句),请使用delete

   Truncate是一种SQL语法,可以快速清除数据表中的所有数据,可以将计数重置为零,并以自动增量重新计算字段。

   I. Truncate语法[{database _ name。[模式名称]。

  架构名称。}]

  表名

   [ ;]

  二。使用Truncate时的注意事项

   1.TRUNCATE TABLE与函数中没有WHERE子句的DELETE语句相同:两者都删除表中的所有行。但是,TRUNCATE TABLE比DELETE更快,并且使用的系统和事务日志资源更少。

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

   3.TRUNCATE TABLE删除表中的所有行,但表结构及其列、约束、索引等除外。保持不变。用于新行标识的计数值被重置为列的种子。如果要保留ID计数值,请使用DELETE。如果要删除表定义及其数据,请使用DROP TABLE语句。

   4.对于外键约束引用的表,不应使用TRUNCATE TABLE,而应使用不带WHERE子句的DELETE语句。TRUNCATE TABLE无法激活触发器,因为它没有记录在日志中。

   5.TRUNCATE TABLE不能用于参与索引视图的表。

   6.当向TRUNCATE TABLE删除数据的表中添加数据时,应该使用UPDATE STATISTICS来维护索引信息。

   7.如果有ROLLBACK语句,删除操作将被取消,但TRUNCATE不会。

   TRUNCATE TABLE1是由FOREIGN KEY约束引用的表,不能用于下表。(您可以截断包含引用自身的外键的表。)

   2.参与索引视图的表。

   3.使用事务复制或合并来复制已发布的表。

   4.对于具有上述一个或多个特征的表,请使用DELETE语句。

   5.TRUNCATE TABLE无法激活触发器,因为此操作不会记录每一行的删除。

  四。TRUNCATE、drop和delete的区别1.drop和Delete只是删除表的数据(定义),drop语句会删除表的结构、依赖约束、触发器和索引;依赖于此表的存储过程/函数将会保留,但会变得无效。

   2.delete语句是DML语言,该操作将被放在回滚段,只有提交后才能生效;如果有对应的触发器,那么在执行的时候就会被触发。Truncate和drop是DDL语言,运算后生效。原始数据不会被放入rollback,不能回滚,操作不会触发trigger。

   3.3.delete语句不会影响表所占用的范围和高水位线,它们会保留在原来的位置。Drop语句释放表占用的所有空间。除非使用重用存储,否则Truncate语句在默认情况下会将空间释放到minextents的程度。Truncate将重置高水位线(回到原始值)。

   4.效率:drop truncate删除

   5.Security 3360小心使用drop和truncate,尤其是在没有备份时。如果要删除一些数据,需要带上where子句。回滚段应该足够大。如果要删除该表,可以使用drop。如果你想保留这个表,你只需要删除这个表的所有数据。如果与事情无关,可以用truncate。如果是跟事情有关的,或者你想触发,或者删除,如果是整理表里面的碎片,你可以用truncate跟上复用行,然后重新导入和插入数据。

   6.delete是DML语句,不会自动提交。Drop/truncate是DDL语句,执行后会自动提交。

   7.drop通常用于删除完整性数据,如表、模式、索引、视图、完整性限制等。Delete用于删除本地数据,如表中的元组。

   8.DROP删除所有表结构;删除只是清除数据。

   9.当不再需要该表时,使用drop;当你还想保留表,但想删除所有记录时,使用truncate;当您想要删除一些记录(总是带有WHERE子句)时,请使用delete。