【数据库】——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、不能清空父表
【总结】
感谢这次运维的机会让小编对数据库多了解了一点,同样感谢这次运维让小编的收获真是非常多的,关于在这次运维中收获的东西,我会继续补充的!多尝试一些新的东西,多去做一些新的东西,多去承担一些东西,相信我们会一直在成长!
话说小编最近在做的系统运维,个人感觉这个系统最强大部分必须是业务逻辑方面,几张表联系在一起,让小编还是非常感叹做系统人员的能力,当然在做的过程中,发现一些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、不能清空父表
【总结】
感谢这次运维的机会让小编对数据库多了解了一点,同样感谢这次运维让小编的收获真是非常多的,关于在这次运维中收获的东西,我会继续补充的!多尝试一些新的东西,多去做一些新的东西,多去承担一些东西,相信我们会一直在成长!
相关文章推荐
- MySQL server has gone away
- error: "mysql" specifies multiple packages
- navicat显示中文为问号
- navicat显示中文为问号
- 在 CentOS7 之部署 Redis3
- 数据日志删除 sql2008
- MySQL用户变量与系统变量
- Windows服务实现不同平台数据库表的迁移
- Oracle数据库的导出和导入
- 使用POI将数据导入导出数据库。
- SQL中使用FOR XML PATH对字段进行拼接
- SQL 聚集索引和非聚集索引
- 数据库操作事务IsolationLevel 枚举
- SQL入门经典(九)之自定义函数
- mysql学习笔记-2.实用的数据库备份和表格备份
- java连接MySQL数据库实现代码
- R通过RJDBC连接外部数据库
- 理解postgresql数据表与其对应的数据文件关系
- 【arcgis】文件地理数据库,个人地理数据库与ArcSDE的局别
- 远程连接MYSQL提示Host is not allowed to connect to this MySQL server