1.MySQL生成删除满足条件的表的sql:

 1 SELECT
2 CONCAT(
3 'DROP TABLE ',
4 GROUP_CONCAT(table_name),
5 ';'
6 ) AS statement
7 FROM
8 information_schema.TABLES
9 WHERE
10 table_schema = 'testmybatis'
11 AND table_name LIKE 'table_mo_%';

DROP TABLE table_mo_tt1,table_mo_tt222;执行生成的语句即可。

2.MySQL批量删除指定前缀表:

 1 SELECT
2 CONCAT(
3 'drop table ',
4 table_name,
5 ';'
6 )
7 FROM
8 information_schema. TABLES
9 WHERE
10 table_name LIKE 'table_mo_%';
 1 SELECT
2 CONCAT(
3 'ALTER TABLE ',
4 table_name,
5 'RENAME TO ',
6 table_name,
7 ';'
8 )
9 FROM
10 information_schema. TABLES
11 WHERE
12 table_name LIKE 'table_mo_%';

3.使用存储过程删除所有满足条件的表:

 1 DROP PROCEDURE drop_table;
2 DELIMITER //
3
4
5 CREATE PROCEDURE drop_table (
6 DB_NAME VARCHAR (50),
7 prefix VARCHAR (16)
8 )
9 BEGIN
10 DECLARE
11 done INT DEFAULT 0 ; #游标的标志位
12 DECLARE
13 a VARCHAR (20) ; DECLARE
14 b VARCHAR (40) ; DECLARE
15 cur1 CURSOR FOR SELECT
16 table_name
17 FROM
18 information_schema. TABLES
19 WHERE
20 table_schema = DB_NAME
21 AND table_name LIKE concat(prefix, '%') ; DECLARE
22 CONTINUE HANDLER FOR SQLSTATE '02000'
23 SET done = 1 ; OPEN cur1 ;
24 REPEAT
25 FETCH cur1 INTO a ;
26 IF NOT done THEN
27
28 SET b = concat(
29 'drop table ',
30 DB_NAME,
31 '.',
32 a
33 ) ; # 拼删除命令
34 # set b=concat('TRUNCATE from ',DB_NAME,'.',a); # 拼删除命令
35 SET @E = b ; PREPARE stmt1
36 FROM
37 @E ; EXECUTE stmt1 ; # 执行命令
38 DEALLOCATE PREPARE stmt1 ; #释放对象
39 END
40 IF ; UNTIL done
41 END
42 REPEAT
43 ; CLOSE cur1 ;
44 END ;//
45 DELIMITER ;
46 call drop_table('testmybatis', 'table_mo_');

4.使用存储过程批量清空满足条件的表

 1 CREATE PROCEDURE `up_truncate_all_table` ()
2 BEGIN
3 DECLARE
4 done INT DEFAULT 0;
5
6 DECLARE
7 tname CHAR (50);
8
9 DECLARE
10 cur1 CURSOR FOR SELECT
11 table_name
12 FROM
13 INFORMATION_SCHEMA. TABLES
14 WHERE
15 table_schema = 'db_name';
16
17 DECLARE
18 CONTINUE HANDLER FOR SQLSTATE '02000'
19 SET done = 1;
20
21 OPEN cur1;
22
23
24 REPEAT
25 FETCH cur1 INTO tname;
26
27
28 IF NOT done THEN
29
30 SET @str = concat('truncate table ', tname);
31
32 PREPARE stmt1
33 FROM
34 @str;
35
36 EXECUTE stmt1;
37
38 DEALLOCATE PREPARE stmt1;
39
40
41 END
42 IF;
43
44 UNTIL done
45 END
46 REPEAT
47 ;
48
49 CLOSE cur1;
50
51
52 END
53 CALL up_truncate_all_table ();

【MySQL】 empty table and delete table.的更多相关文章

  1. 【MySQL】DDL因Waiting for table metadata lock卡住

    在数据库空闲时间,对表做碎片整理: alter table my_abc engine=innodb; 发现会话被阻塞,显示状态是: Waiting for table metadata lock 手 ...

  2. 【MySQL】详细说下MySQL删除数据的过程是什么样的?

    drop table 这里先介绍一下[InnoDB]存储表空间概念: Innodb存储引擎,可将所有的数据库数据存放于[ibdata1]的共享表空间:也可以将每张表存放于独立的.idb文件的独立表空间 ...

  3. 【MySQL】从入门到精通8-SQL数据库编程

    上期:[MySQL]从入门到精通7-设计多对多数据库 第零章:Mac用户看这里: mac终端写MySQL和windows基本相同,除了配置环境变量和启动有些许不同以外. 先配置环境变量,在终端输入vi ...

  4. 【MySQL】从入门到掌握3-WorkBench

    上期:[MySQL]从入门到掌握2-下载安装 我们安装完MySQL Server的时候,是没有任何界面的. 不过很好,我们有一个工具,MySQL Workbench,他可以简化我们的操作,有点像Jav ...

  5. 1229【MySQL】性能优化之 Index Condition Pushdown

    转自http://blog.itpub.net/22664653/viewspace-1210844/  [MySQL]性能优化之 Index Condition Pushdown2014-07-06 ...

  6. 【MySQL】drop大表

    利用硬链接和truncate降低drop table对线上环境的影响 众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看 ...

  7. 【MySQL】结构行长度的一些限制

    今天被开发提交的DDL变更再次困惑,表中字段较多,希望将已有的两个varchar(4000)字段改为varchar(20000),我想innodb对varchar的存储不就是取前768字节记录当前行空 ...

  8. 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

      [MySQL]Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后, ...

  9. 【mysql】autocommit=0后,commit, rollback无效

    之前在[mysql]MySQLdb中的事务处理中用autocommit和commit()以及rollback()实现了事务处理. 但后来,用同样的代码在另一个数据库中运行却失败了.找了一个下午的原因. ...

随机推荐

  1. visual studio 2015中的webapi生成helpPage,页面不显示方法说明问题解决

    环境: vs2015.win7 参考:http://www.cnblogs.com/Erik_Xu/p/5638381.html 生成的help页面如下:,并没有显示控制器和方法. 原因是:新建项目时 ...

  2. 云计算之路-阿里云上:13:43-13:44之间RDS故障影响了全站的正常访问

    抱歉!13:43-13:44之间,由于阿里云RDS(云数据库)出现2分钟突发故障,影响了全站的正常访问,给大家带来了麻烦,望大家谅解! 故障期间,应用程序日志中记录的错误信息如下: System.Da ...

  3. 为什么目前没有"成熟"的cookie插件?

    一.序言 最近真是挺忙的啊,导致也挺久没有时间来看看园中各位大神的文章,只能感慨业务真尼玛的多,所以在此写下一篇文章来大话最近工作和学习上面的一点点收获体会,希望大家能够有所收获,这篇文章虽然说是一篇 ...

  4. 【翻译】DotNetMQ: 一个.NET版完整的消息队列系统

    在一个大型的分布式系统中,消息队列是不可缺少的中间件,能很好的解决异步消息.应用解耦.均衡并发等问题.在.net中,偶然发现一个效率不错.安全可靠.功能齐全的消息组件,忍不住翻译过来,供大家快速预览. ...

  5. iOS --- DIY文件名批量修改

    批量修改文件名: // 1.创建文件管理 NSFileManager *filemanager =[NSFileManager defaultManager]; // 2. 获得所有文件夹路径 NSS ...

  6. 运维自动化轻量级工具pssh

    1pssh介绍 pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程 ...

  7. 【转】单调队列优化DP

    转自 : http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列是一种严格单调的队列,可以单调递增,也可以单调递减.队 ...

  8. C++链表

    之前用C写链表的时候,结点使用结构体封装的,操作起来总是感觉很麻烦.C++中使用类来封装结点,感觉操作起来方便多了,内存回收也感觉很清楚. 最近,做Gps数据分析时,别人要求加一个树形控件. Gps数 ...

  9. 经典KMP算法C++与Java实现代码

    前言: KMP算法是一种字符串匹配算法,由Knuth,Morris和Pratt同时发现(简称KMP算法).KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.比 ...

  10. Java文件写入,换行

    import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExce ...