【MySQL】 empty table and delete table.

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 ();
复制代码
原文地址:https://www.cnblogs.com/flydkPocketMagic/p/5998515.html