mysql清空多表数据(全清空)

我想用一条sql实现清空test1和test2的数据。(即分别执行:DELETE FROM test1;DELETE FROM test2)

目前使用的sql语句:DELETE FROM test1,test2 USING test1,test2
遇到的问题:如果两个表都有数据,可以清空;如果只有1张表有数据,没法清空。
使用的mysql版本:5.0.45-community-nt-log.
请先测试后再回答,谢谢。
TRUNCATE试过,不过每次只能清一张,我的需求是1条sql清空多表数据,不删除表结构。

第1个回答  2014-03-27
直接选中要清空的表,拖动多选,右击--清空表
第2个回答  2013-09-29
你是想清空内容,不删除表吧,删除表用drop,清空试试TRUNCATE

这种需求很奇怪,如果不用程序,就试试批处理吧。追问

对的,我要用php去删除数据。我想只执行1次查询,而不是循环delete or truncate

追答

无论你循环还是不循环,对数据库来说,消耗都是一样大的,mysql最多给你执行一个批处理,还是先清空一个,再清空另外一个。

追问

哥们,你考虑了php操作mysql的代价吗?

照你的思路,如果我有一个test表,字段是id和t.我想插入的数据是

php代码1:

php代码2:

两者的效率是相同的?大错特错,迭代中执行的查询消耗远大于同样效果的单次查询。

如果你觉得我的结论是错的,请亲测。

追答

我就问你,你的测试,这俩者之间有多少差距?

你要是做成千上万你的表的,删除工作,那你需要好好考虑,你一共会有多少个表清空操作?

我觉得你太钻了,再说了,我试着用几个工具,做了删减清空多个表的操作,这些工具的日志里都可以看出,人家用的就是删减一个,再删减第二个,依次执行,也就是批处理执行。

你有俩个问题:

1,表太多。
你会有同时做多少个表清空的操作?1百个,1千个?效率上会有多大差距?

2,你的表有多大
你的表会有多大?你说的这种清空,表一般不会很大吧,如果很大,你就不会考虑多个同时清空了吧。

所以,我觉得你再钻牛角尖,再说了,加入mysql没提供多个表清空操作,你又如何?

补充:像你这种需求,本身就不合理,清空删除临时表,还可以理解。你可以参考触发器

追问

那你到底知不知道有这种sql语法啊?或者说mysql支不支持同时清空多表?
没的话就循环,有的话肯定就用那语法格式了。
你有车了难道还会去挤公交吗?

顺便补充:我测试的1个脚本插入50条数据代码1比代码2慢10倍(取1W次的平均值)。

追答

有车了就不会挤公交了,但没车就不出门了么?

mysql支持多个表清空,但mysql做的是批处理,也就是清空一个,在清楚第二个。

至于mysql有没有一次性操作的支持,如果有,早就搜到了。你心里还没个答案么

第3个回答  2013-09-29
DROP TABLE `表1`, `表2`, `表3`, `表4`,……,`表N`;

另外纠正一下,phpmyadmin一次可以删除多个表,你同时选中多个复选框然后在“选择项”的下拉框里选择“删除”一项就可以同时删除多个表了。追问

保留表结构,用sql语句。

追答

这个只是删数据啊

追问

是啊,可是我要用PHP去执行sql语句啊

第4个回答  2013-09-29
貌似用drop 字句吧!