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。