delete语句一次可以删除几行 delete只能删除一行吗
很多朋友对于delete语句一次可以删除几行和delete只能删除一行吗不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
mysql误删除一个表,可以恢复吗
1、首先构建测试环境数据create table t1(a varchar(10),b varchar(10));insert into t1 values('1','1');insert into t1 values('2','2');commit;。
2、模拟误修改,将t1表中的b字段更新为错误数据"123456"update t1 set b='123456' where a='1';commit;select* from t1;。
3、将恢复工具上传到服务器并进行解压。unzip binlog2sql-master.zip。
4、得到误修改时的binlog文件(show binary logs;),实验环境是mysql-bin.000011。
5、通过binlog2sql.py脚本的到所有对表 t1的修改操作。python binlog2sql.py-hlocalhost-P23307-ubinlog2sql-p'binlog2sql'-dtest-tt1--start-file='mysql-bin.000011'。
6、得到了误删除的sql的准确位置在1382-1615之间,使用 _**-B**_选项生成回滚sql。python binlog2sql.py-hlocalhost-P23307-ubinlog2sql-p'binlog2sql'-dtest-tt1--start-file='mysql-bin.000011'--start-position=1382--stop-position=1615-B。
7、执行得到的回滚语句进行误操作恢复。就完成了。
Oracle数据库重复数据删除的几种方法
重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样。Oracle数据库重复数据删除技术有如下优势:更大的备份容量、数据能得到持续验证、有更高的数据恢复服务水平、方便实现备份数据的容灾。
一、删除部分字段重复数据先来谈谈如何查询重复的数据吧。
下面语句可以查询出那些数据是重复的:
select
字段1,字段2,count(*)
from
表名
group
by
字段1,字段2
having
count(*)
>
1
将上面的>号改为=号就可以查询出没有重复的数据了。
想要删除这些重复的数据,可以使用下面语句进行删除
delete
from
表名
a
where
字段1,字段2
in
(select
字段1,字段2,count(*)
from
表名
group
by
字段1,字段2
having
count(*)
>
1)
上面的语句非常简单,就是将查询到的数据删除掉。不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下:
CREATE
TABLE
临时表
AS
(select
字段1,字段2,count(*)
from
表名
group
by
字段1,字段2
having
count(*)
>
1)
上面这句话就是建立了临时表,并将查询到的数据插入其中。
下面就可以进行这样的删除操作了:
delete
from
表名
a
where
字段1,字段2
in
(select
字段1,字段2
from
临时表);
这种先建临时表再进行删除的操作要比直接用一条语句进行删除要高效得多。
这个时候,大家可能会跳出来说,什么?你叫我
关于delete语句一次可以删除几行到此分享完毕,希望能帮助到您。