您的位置:首页 > 数据库

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

2016-06-26 14:04 295 查看
【前提】

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

【总结】

   感谢这次运维的机会让小编对数据库多了解了一点,同样感谢这次运维让小编的收获真是非常多的,关于在这次运维中收获的东西,我会继续补充的!多尝试一些新的东西,多去做一些新的东西,多去承担一些东西,相信我们会一直在成长!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: