首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL数据库:drop、truncate、delete的区别

1、删除速度:drop>truncate>delete; 2、删除方式: (1)执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在日志文件中。...delete可根据where条件删除表中指定的数据,如果不指定where子句,则跟truncate一样,可以删除表中所有记录。...(2)truncate通过释放存储表数据所用的页来删除数据,一次性删除表中所有记录,不会将删除的数据记录在日志文件中,只在日志文件中记录页的释放,使用的系统和事务日志资源少,所以执行速度比delete快...对于外键约束引用的表,不能使用 truncate table,而应使用不带 where 子句的 delete 语句。...4、提交方式:delete是DML,需要手动提交操作才能生效,可以回滚,可以触发触发器;truncate和drop是DDL,会隐式提交,不能回滚,不会触发触发器。

1.3K30

MySQLTRUNCATE使用

TRUNCATE [TABLE] tbl_name TRUNCATE TABLE用于完全清空一个表。从逻辑上说,该语句与用于删除所有行的DELETE语句等同,但是在有些情况下,两者在使用上有所不同。...对于InnoDB表,如果有需要引用表的外键限制,则TRUNCATE TABLE被映射到DELETE上;否则使用快速删减(取消和重新创建表)。...使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器,设置时不考虑是否有外键限制。...对于其它存储引擎,在MySQL 5.1中,TRUNCATE TABLE与DELETE FROM有以下几处不同: TRUNCATE不可以使用where删除特定的记录。...当被用于带分区的表时,TRUNCATE TABLE会保留分区;即,数据和索引文件被取消并重新创建,同时分区定义(.par)文件不受影响。

1.3K80
您找到你想要的搜索结果了吗?
是的
没有找到

Mysql指令select,update,insert,drop,truncate+MySQL数据库备份恢复

库中的详细内容: mysql> select * from mysql.db\G; 建议大家在查找的时候,一定要有针对性,不要直接*,有时候数据库比较大,几百个G也很正常。...t1; Empty set (0.00 sec) 2.4 删除整个表内的所有数据truncate(有时候表内的数据比较多,一个一个地删除会浪费很长时间,我们需要一次性全部搞定): mysql> truncate...删除整个表db1.t1(表+ 数据) mysql> drop table db1.t1 2.6 删除一个db1库 drop database db1; 以后尽量不要使用drop和truncate,十分危险...---- 三、MySQL数据库备份恢复 如果不小心删除了一个数据库,那就是比较悲剧的事情了,如何在删除之前先备份呢?...[[email protected]03 ~]# ls /tmp/ mysql2_tab.sql 其实我们使用mydqldump命令只是备份一些小的数据库,但是如果备份一个很大的数据库(几百G或者几T)

1.7K80

MySQL中delete、truncate、drop用法比较

这种删除方式不会重置auto_increment为1,但是重启数据库后auto_increment会被置为1。 第二种带删除条件,表示删除表中的部分记录。...2. truncate# truncate属于数据定义语言(DDL),不会执行事务,也不会触发触发器,数据无法回滚,常见命令如下: # truncate不支持where条件,仅支持删除所有 truncate...table table_name; truncate命令从表中删除所有行,但表结构及其列,约束,索引等保持不变。...不管是InnoDB引擎还是MyISAM引擎,在执行truncate命令后都会释放磁盘空间,且会重置auto_increment为1。...执行truncate需要drop权限,最好提前备份数据库表,因为无法通过binlog回滚。 3. drop# drop也属于数据定义语言(DDL),也不可恢复。

1.8K10

MySQL DELETE语句和TRUNCATE TABLE语句的区别

MySQL DELETE语句和TRUNCATE TABLE语句功能相似,但是二者究竟有何区别呢?下文就将为您分析MySQL DELETE语句和TRUNCATE TABLE语句的区别,供您参考。...在MySQL中 有两种方法可以删除数据,一种是MySQL DELETE语句,另一种是MySQL TRUNCATE TABLE语句。DELETE语句可以通过WHERE对要删除的记录进行选择。...而使用TRUNCATE TABLE将删除表中的所有记录。因此,DELETE语句更灵活。...DELETE FROM table1 WHERE ; 如果DELETE不加WHERE子句,那么它和TRUNCATE TABLE是一样的,但它们有一点不同,那就是DELETE可以返回被删除的记录数,而TRUNCATE...和标准的SQL语句不同,MySQL DELETE语句支持ORDER BY和LIMIT子句,通过这两个子句,我们可以更好地控制要删除的记录。

1.9K140

TRUNCATE恢复-bbed

根据之前对truncate原理的分析,truncate是不能通过闪回查询或者logminer的方式来恢复的,因为truncate操作不会对数据块进行任何操作。那么truncate应该如何恢复呢?...数据库闪回(要求flashback database开启,并且必要的闪回日志和归档日不能丢失,因为闪回数据库不仅仅需要应用闪回日志,归档日志也是需要的。)...异机恢复(要求有可用的备份以及必要的归档日志) TSPITR(要求有可用的备份以及必要的归档日志) 其中数据库闪回和TSPITR对数据库影响较大。...假如数据库flashback database没有开启,并且无备份的情况下该如何恢复呢?...ODU恢复truncate的原理是通过scan数据文件生成一个ext.odu的文件,该文件是按照表的dataobj#扫描出具体的extent信息,然后通过ext.odu可以导出需要恢复的表的数据,最终再导入到数据库

1.2K50

Truncate用法详解

前言: 当我们想要清空某张表时,往往会使用truncate语句。大多时候我们只关心能否满足需求,而不去想这类语句的使用场景及注意事项。本篇文章主要介绍truncate语句的使用方法及注意事项。...1.truncate使用语法 truncate的作用是清空表或者说是截断表,只能作用于表。...truncate的语法很简单,后面直接跟表名即可,例如:truncate table tbl_name 或者 truncate tbl_name 。...3.truncate使用场景及注意事项 通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。...truncate会清空所有数据且执行速度很快。 truncate不能对有外键约束引用的表使用。 执行truncate需要drop权限,不建议给账号drop权限。

4.3K20

MySQL删除表数据、清空表命令(truncate、drop、delete 区别)

一、MySQL清空表数据三种方法1.1 清空表数据:truncatesql命令#清空多张表、库中所有表的数据truncate table table_name1,table_name2,......;#清空单张表的数据truncate table table_name;注意:truncate会删除表中的所有数据、释放空间,但是保留表结构只能操作表,不能与where一起使用truncate删除操作立即生效...也不释放空间delete可以删除一行、多行、乃至整张表每次删除一行,都在事务日志中为所删除的每行记录一项,可回滚如果不加where条件,表示删除表中所有数据,仅删除数据、保留表结构,同时也不释放表空间MySQL...,谨慎使用drop、truncate。...三、truncate、drop、delete区别truncate、delete和drop都是用于删除数据或表的操作,但它们之间有一些关键的区别:操作类型:truncate:删除表中的所有数据,保留表结构

9.5K11

Truncate用法详解

本篇文章主要介绍truncate语句的使用方法及注意事项。 1.truncate使用语法 truncate的作用是清空表或者说是截断表,只能作用于表。...truncate的语法很简单,后面直接跟表名即可,例如: truncate table tbl_name 或者 truncate tbl_name 。...2.truncate与drop,delete的对比 上面说过truncate与delete,drop很相似,其实这三者还是与很大的不同的,下面简单对比下三者的异同。...3.truncate使用场景及注意事项 通过前面介绍,我们很容易得出truncate语句的使用场景,即该表数据完全不需要时可以用truncate。...truncate会清空所有数据且执行速度很快。 truncate不能对有外键约束引用的表使用。 执行truncate需要drop权限,不建议给账号drop权限。

81010

变通执行truncate

但是最近一个新的功能,需要对某张表,执行truncate操作。众所周知,truncate虽然是删除数据,但他是DDL,不是DML操作,因此开发人员的账号,肯定不能执行。...用user_a用户登录,执行truncate操作,提示错误如下, ? 按照truncate的定义,truncate只能删除用户属主的表,或者该用户拥有drop any table权限。...此时,只能曲线救国,首先在tbl_truncate属主用户下创建存储过程p_truncate,执行的操作,就是truncate table tbl_truncate,其次,将存储过程的执行权限,授予用户...user_b中,exec执行存储过程,即完成了truncate的操作, ? 如果要更纯粹些,屏蔽属主用户,可以创建同义词,即可直接执行存储过程,完成表的truncate操作, ?...但是这种存储过程的truncate,和实际程序中,使用truncate table,语法上,还是不同的,因此针对不同的场景,来选择合适方案,仅供参考。

79420

SQL命令 TRUNCATE TABLE

TRUNCATE TABLE为从其他数据库软件迁移代码提供了兼容性。 截断一个表: 表必须存在于当前(或指定)命名空间中。 如果无法找到指定的表,IRIS将发出SQLCODE -30错误。...Fast Truncate 如果可能,SQL优化器将执行高效的Fast Truncate表操作。 Fast Truncate操作删除表的范围,而不是单独删除每条记录。...当无法实现快速截断时,将执行标准的Truncate TABLE操作。 注意:如果没有删除行,或者使用Fast TRUNCATE删除行,则TRUNCATE TABLE不会初始化或设置%ROWID。...失败的TRUNCATE TABLE操作可能会使数据库处于不一致的状态,一些行被删除,一些行没有被删除。...这应该只在单个用户/进程更新数据库时使用。 如果不指定%NOLOCK,则快速截断将尝试获取表级锁。

1.7K30

TRUNCATE TABLE恢复-脚本

基于本周二发的文章《TRUNCATE恢复-bbed》(详戳),有些朋友或许对块结构和bbed不熟悉,且bbed的方法也较为复杂,那么大家也可以尝试使用本文的方法来修复。...结合truncate系列一的原理《TRUNCATE TABLE原理解析》(详戳),再加上truncate table还有一个特点,就是所释放的空间会变成free space,这就给没有备份的情况下恢复表数据提供了另外一种思路...使用dbms_rowid.rowid_create抽取该表空间匹配truncate前dataobj#的block里的数据。...抽取的范围也有两种思路: truncate bbed修复中介绍的redodump找出的extent map里的block(本文的PL/SQL不采用此方式)。...因为表可能会truncate过多次,原dataobj#不一定就等于obj#,所以需要通过redo来确认,如果最小补充日志没有打开,LogMiner可能会有遗漏。如果遗漏则使用redodump来寻找。

75830
领券