数据库

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

2021-01-12 06:21:49 阅读数 5283 收藏 0


【前提】
  话说小编最近在做的系统运维,个人感觉这个系统最强大部分必须是业务逻辑方面,几张表联系在一起,让小编还是非常感叹做系统人员的能力,当然在做的过程中,发现一些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、不能清空父表

【总结】

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