【数据库】——drop、delete、truncate比较


【前提】
  话说小编最近在做的系统运维,个人感觉这个系统最强大部分必须是业务逻辑方面,几张表联系在一起,让小编还是非常感叹做系统人员的能力,当然在做的过程中,发现一些sql语句脚本。其中涉及到最多的就是清空记录的问题了,觉得无非就是个delete的问题,没想到还是非常值得研究的!下面小编主要分享一下自己知道的内容。
【如何使用】
Drop:删除数据库或数据表,或删除数据表字段。
  删除数据库:drop database 数据库名称
  删除数据表字段:
     use 数据库名称
     drop table 数据表1名称,数据表2名称
Delete:删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行)。
  删除某一行:Delete from 数据表名称 where 列名称=值;
删除所有行:delete * from 数据表名称
Truncate:删除数据表中的数据(仅数据表中的数据,不删除表)。
truncate table 数据表名称
“ TRUNCATE TABLE语句是一种快速、无日志记录的方法。TRUNCATE TABLE语句与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE语句速度更快,并且使用更少的系统资源和事务日志资源。”
【相同点】
1.truncate和不带where子句的delete、以及drop都会删除表内的数据。
2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。
3.与 DELETE 语句相同,使用 TRUNCATE TABLE语句清空的表的定义与其索引和其他关联对象一起保留在数据库中。
【Truncate小结】
1、truncate table在功能上与不带 WHERE 子句的 delete语句相同:二者均删除表中的全部行。
2、但 truncate 比 delete速度快,且使用的系统和事务日志资源少。
3、delete语句每次删除一行,并在事务日志中为所删除的每行记录一项。所以可以对delete操作进行roll back
4、truncate在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令Delete将被撤销,而 truncate 则不会被撤销。
5、truncate是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对 truncate 使用ROLLBACK命令。
6、truncate将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过 truncate 操作后的表比Delete操作后的表要快得多。
7、truncate 不能触发任何Delete触发器。
8、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
9、不能清空父表

【总结】

   感谢这次运维的机会让小编对数据库多了解了一点,同样感谢这次运维让小编的收获真是非常多的,关于在这次运维中收获的东西,我会继续补充的!多尝试一些新的东西,多去做一些新的东西,多去承担一些东西,相信我们会一直在成长!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mandy_i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值