sql 删除语句

上周一位客户问我这个问题。
当时他在操作数据库时遇到了困难。
听了我的话,他就清楚多了。

看,使用delete、delete、truncate确实要看情况。

你自己想想吧。
如果只想从表中删除几条特定的记录,比如一个叫张三丰的学生,DELETE是最合适的记录。
如果您编写 WHERE 条件,您的数据将是安全的,因为即使删除后表也将保持不变。
还有完整的操作日志,方便回滚。

但是,如果您认为不需要整个表,包括表结构、索引和约束,请使用 DROP。
上次处理之前系统的迁移是在2 02 3 年5 月,很多废弃的表都被直接删除了。
反正那张桌子以后就不会再用了。
立即将其完全删除可以节省您的精力。

最令人困惑的是 TRUNCATE。
该函数与DELETE最相似,也用于清除表,但速度更快,消耗的资源更少。
例如,如果您有一个数百GB的订单表,如果您继续使用DELETE一项一项地删除项目,您的数据库将几乎停止运行。
这就是 TRUNCATE 的强大之处。
直接清除表的内容并将表恢复到初始状态。
速度太快了。
当我在上海的一个购物中心做一个项目时,我正在处理一个用户行为日志表。
桌子很大。
我每晚都使用 TRUNCATE 进行维护。
第二天上班的时候,数据被删除了,表又恢复到原来的状态。

但是TRUNCATE和DROP功能非常强大,使用前必须进行检查。
此外,记录 TRUNCATE 操作比 DELETE 更简单,因此在极端情况下回滚可能并不完美。

无论如何,这取决于你。
使用 DROP 完全删除表。
使用 TRUNCATE 快速清除数据但保留表。
如果您只想删除几条记录,请使用 DELETE。

sql删除语句

删除、删除和截断应该明确分开。

1 . DELETE语句:用于删除表中的某些行。
每次删除一行,都要保留一个日志什么的,挺麻烦的。
想一想,比如有一个学生表,你想删除张三丰这个名字,该怎么写呢?即: SQL DELETE FROM Student WHERE name = '张三丰'
这样,张三丰从表中消失,但表结构不变。

2 删除声明:这很强大。
这直接删除了整个表,包括表定义、约束、触发器、索引等,全都没有了。
简而言之,桌子完全消失了。
如果将来要添加数据,则必须创建一个新表。
例如: SQL Drop Table Student
Student 表完全消失,内存被释放。
请注意,依赖于该表的存储过程或函数仍然存在,但状态将变得无效,必须重新编译。

3 TRUNCATE语句:清除表中的数据,但保留表结构。
与 DROP 不同,它只是清除数据,表仍然存在。
例如: SQL TRUNCATE TABLE STUDENT
STUDENT表中的所有数据都没有了,但是表结构还在。
如果再次使用INSERT插入数据,就会和删除前一样。

实际使用中,差别还是比较明显的。
如果您不再需要手表,请将其丢弃。
如果桌子仍在使用但非常如果有更多数据并且您想要清除它,则截断它。
如果只想删除几行,请使用带有 WHERE 子句的 DELETE。

截断与删除相比如何?从功能上来说,TRUNCATE 会清除表数据,就像不带 WHERE 的 DELETE 一样。
但 TRUNCATE 速度更快,并且使用更少的系统资源和事务日志。
TRUNCATE 后清除表比 DELETE 后清除表快得多。
因此,当数据很多的时候,TRUNCATE就比较省事。