问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql如何删除数据库中所有数据但是要保留表

发布网友 发布时间:2022-04-21 07:48

我来回答

6个回答

懂视网 时间:2022-04-07 19:11

推荐:《mysql视频教程》

mysql批量删除大数据

mysql一次性删除大量数据是有可能造成死锁的,而且也会抛异常

The total number of locks exceeds the lock table size in MySQL

这是由于需要删除的数据太大,mysql给的buffer好像只有8MB左右

lock wait timeout exceed 超时

所以需要分批处理,这也是操作大数据时一种常见的思路

网上比较好的一种方法是:

首先找出符合条件的最大id(这里的id是有序的,不需要连续)

select max(id) from table_name where create_time < '2017-04-06'

在where字段上建立索引可提高效率

千万左右的数据大概需要10多秒

接着按id删除,一次删除10k,循环删除

delete from table_name where id < maxId limit 10000

热心网友 时间:2022-04-07 16:19

删除的办法是执行truncat方法,只是不需要每次手动的输入truncate命令进行删除。

通过sql命令的方式生成所有的truncate语句并写入到.sql脚本文件中,然后执行脚本即可完成删除操作,并且保留了表结构。

生成truncate命令的sql语句为:

SELECTCONCAT('TRUNCATETABLE',TABLE_NAME,';')FROMinformation_schema.TABLESWHERETABLE_SCHEMA='test'intooutfile'/tmp/truncate_test.sql';。

然后将生成的.sql脚本拷贝到当前文件夹下面:

mv/tmp/truncate_test.sql$current_dir/。

然后执行.sql脚本将数据库中所有表中数据删除:

source$current_dir/truncate_test.sql。

注意:

在进行select....intooutfile......操作时,默认只能将文件写入到tmp路径下,可以不用将tmp文件夹下面的.sql脚本移动到当前文件夹下,直接在tmp路径下执行.sql脚本即可。

扩展资料:

常见的删除数据库表中数据的方法是通过delete或者truncate的方法进行删除操作,如果删除的是表中某一条或者部分数据的话适合用delete操作进行删除,如果要删除表中所有的数据的话,适合是同truncate进行删除操作。

如果不需要保留数据库中所有表的结构,那么答案很简单,执行命令dropdatabase数据库名即可达到目的。

但是如果需要保留该数据库中所有表的结构,只想删除所有表中的数据,多执行几次truncate可以达到。

参考资料:百度百科-数据表

热心网友 时间:2022-04-07 17:37

如果用 phpmyadmin管理的话,直接选中所有表,然后清空就ok了

如果要sql代码实现的话,可以参考我转载的一篇文章:
http://hi.baidu.com/kalcaddle/blog/item/875549d5778e6a0ea18bb7af.html

1--Use 数据库名称
2use databasename
3--第一部分,生成建立外键的语句保存到#tmp
4declare @name varchar(200),@tmp1 varchar(500),@tmp2 varchar(500)
5
6create table #tmp
7(
8string varchar(8000)
9)
10
11SELECT 表名称=object_name(b.fkeyid)
12 ,外键名称=a.name
13 ,引用的列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid)
14 ,引用的表名=object_name(b.rkeyid)
15 ,已引用的列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
16into #t FROM sysobjects a
17 join sysforeignkeys b on a.id=b.constid
18 join sysobjects c on a.parent_obj=c.id
19where a.xtype='f' AND c.xtype='U'
20
21declare cur_test cursor for
22 select a.name from sysobjects a join sysobjects c on a.parent_obj=c.id where a.xtype='f' and c.xtype='U'
23open cur_test
24FETCH NEXT FROM cur_test INTO @name
25WHILE (@@fetch_status <> -1)
26BEGIN
27 IF (@@fetch_status <> -2)
28 BEGIN
29 select @tmp1='',@tmp2=''
30 select @tmp1=@tmp1+'['+引用的列名+'],',@tmp2=@tmp2+'['+已引用的列名+'],' from #t where 外键名称=@name
31 insert into #tmp select top 1 'ALTER TABLE [DBO].['+表名称+'] ADD CONSTRAINT ['+@name+'] FOREIGN KEY ( '+left(@tmp1,len(@tmp1)-1)+' ) REFERENCES ['+引用的表名+'] ( '+left(@tmp2,len(@tmp2)-1)+' )' from #t where 外键名称=@name
32 END
33 FETCH NEXT FROM cur_test INTO @name
34END
35
36CLOSE cur_test
37DEALLOCATE cur_test
38drop table #t
39
40--第二部分,删除所有外键
41DECLARE @STRING VARCHAR(8000)
42WHILE EXISTS(SELECT NAME FROM SYSOBJECTS WHERE TYPE='F')
43BEGIN
44 SELECT @STRING='ALTER TABLE '+B.NAME+' DROP CONSTRAINT '+A.NAME+CHAR(13)
45 FROM (SELECT PARENT_OBJ,NAME FROM SYSOBJECTS WHERE TYPE='F') A,
46 (SELECT ID,NAME FROM SYSOBJECTS WHERE OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1) B
47 WHERE A.PARENT_OBJ=B.ID
48 EXEC(@STRING)
49END
50
51--第三部分,删除所有表的记录,并且把identity复位
52exec sp_msforeachtable "truncate table ?"
53
54--第四部分,执行#tmp里面的建立外键的语句,恢复外键
55declare cur_test2 cursor for select string from #tmp
56
57open cur_test2
58FETCH NEXT FROM cur_test2 INTO @string
59WHILE (@@fetch_status <> -1)
60BEGIN
61 IF (@@fetch_status <> -2)
62 BEGIN
63 exec(@string)
64 PRINT @STRING
65 END
66 FETCH NEXT FROM cur_test2 INTO @string
67END
68
69CLOSE cur_test2
70DEALLOCATE cur_test2
71
72drop table #tmp
73
74

热心网友 时间:2022-04-07 21:03

Sub DeleteTables(db)
On Error Resume Next
Dim mycon1, rs1
Set mycon1 = CreateObject("ADODB.Connection")
Set rs1 = CreateObject("ADODB.Recordset")
mycon1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db
Set rs1 = mycon1.OpenSchema(20)
Do Until rs1.EOF
If Err <> 0 Then Exit Do
If InStr(rs1.Fields("table_type"), " ") = 0 Then ss = ss & "," & UCase(rs1.Fields("table_name"))
rs1.MoveNext
Loop
rs1.Close
arr = Split(ss, ",")
For i = 1 To UBound(arr)
rs1.Open "drop table [" & arr(i) & "]"
Next
mycon1.Close
Set rs1 = Nothing
Set mycon1 = Nothing
End Sub

参考资料:http://support.microsoft.com/kb/186246

热心网友 时间:2022-04-07 23:11

选中数据库 -> 右键 -> Truncate Database 。

热心网友 时间:2022-04-08 01:36

恢复整个数据库
首先,如果要恢复的数据库是含有授权表的mysql数据库,将需要使用--skip-grant-tables选项运行服务器。否则,服务器将抱怨无法找到授权表。在恢复表之后,执行mysqladmin flush-privileges 来告诉服务器加载授权表,并用它们启动。
将原数据库目录的内容拷贝到其他的地方。例如,您可能会在稍后用它们进行崩溃表的事后分析检查(post-mortem examination)。
用最新的备份文件重新加载数据库。如果您打算使用由mysqlmp 加载的文件,则需要将它们作为mysql的输入。如果打算使用从数据库中直接拷贝的文件(如,用tar 或c p),则将它们直接拷贝回到该数据库目录中。但是,在这种情况下,应该在拷贝这些文件之前关闭服务器,然后再重新启动它。
用更新日志重做在进行备份后又修改了数据库表的查询。对于所有可用的更新日志,可使用它作为mysql的输入。指定--one-database 选项,使mysql只对想要恢复的数据库执行查询。如果您知道需要使用所有的更新日志文件,可在包含日志的目录中使用下列命令:
% ls-t-r-l update.(0-9)* | xargs cat | mysql--one-database db_name
ls 命令产生更新日志文件的单列列表,更新日志文件根据服务器生成的顺序进行排序(要知道,如果您修改了其中的任何文件,排序的顺序都将改变,这将导致更新日志按错误的顺序使用)。
您很可能必须使用某些更新日志。例如,如果自备份以来所产生的日志命名为update.392、pdate.393 等等,可以重新运行它们中的命令:
% mysql--one-database db_name updata.392
% mysql--one-database db_name updata.393

如果正在运行恢复并打算使用更新日志恢复由于失策的DROP DATA BASE、DROPTABLE或DELETE 语句而丢失的信息,应确保先从更新日志中删除这些语句。
恢复单个的表
恢复单个表是很困难的。如果有通过mysqlmp 生成的备份文件并且它恰好不包含您想要的表数据,则需要抽取相关的行并用它们作为mysql的输入,这部分较容易。困难的是抽取应用于该表的更新日志的片段。您会发现: mysql_find_rows 实用程序对这方面有帮助,它可以从更新日志中抽取多行查询。
另一种可能性是用另一个服务器恢复整个数据库,然后将所要的该表的文件拷贝到原始数据库中。这实际很容易!在将文件拷贝回数据库目录时,应确保原始数据库的服务器关闭。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 mysql删除数据 mysql中怎么删除表 mysql删除表格数据? 如何用手机支付宝转账到银行卡 如何用手机从支付宝转账到银行卡 支付宝扫码转账到银行怎么隐藏卡号 如何从支付宝转账到银行卡 支付宝转帐到银行一般须要多长时间 怎么找到支付宝扫码转账的账户 支付宝转账怎么到银行卡 为什么支付宝是商家码 别人扫码之后 我转账到银行卡 还是扣手续费? 支付宝如何转账到银行账户 滴滴快车预约车怎么预约 公司购入的五金和配件做什么会计科目 什么是十二星座?都各有什么特点 购入的专利记入什么会计科目 十二星座最详细的解析 购入的氧气瓶入什么会计科目 十二个星座分别代表什么? 请问采购材料记入什么会计科目 mysql如何清空表 如何从MYSQL数据库中删除表 mysql怎么删除数据库 怎么删除mysql数据库 mysql 怎样删除表记录,什么命令??? mysql删除数据库sftp怎么使用 如何在mysql中清空某个数据库文件? mysql一次删除多个表中数据 win10屏幕设置 win10系统屏幕设置 win10怎么设置双屏幕显示 win10系统怎么调整屏幕 格力空调oe是什么故障? 格力空调显示E6是什么故障,不制冷,求大神解 微信听筒模式是什么 微信语音杂音好大怎么回事? 为啥接电话声音很小,但微信语音声音很大? 微信听筒模式声音太大怎么调小 发微信语音杂音很大怎么办? 为什么微信语音有回音?