MYSQL 批量删除以特定前缀开头的表

摘要:
在测试期间,为测试创建了大量数据,其中可能包含一些脏数据。因此,最好在下一轮测试中删除整个模块的数据。SQL是通过使用存储过程实现的,存储过程可以遍历和删除带有这些特定前缀的表。当然,这是可丢弃的。您可以将其更改为可删除,这样只会删除数据而不会删除表,这取决于情况!
前言
这是工作中确实会用到,比如分库分表后有t_order_01、t_order_02、t_order_03...t_order_08 这样的表。
测试过程中造了大量数据进行测试,其中可能含有部分脏数据,因此下一轮测试时最好把整个模块的数据进行删除。

                                                                              
                                                                                三月,你好。
实现SQL
采用了存储过程来实现,可遍历删除这些特定前缀的表。
SQL如下:

## 存储过程实现
drop PROCEDURE if EXISTS rush;
create PROCEDURE rush()
BEGIN 

## 创建临时表,插入快照数据
drop table if exists drop_tb;
create TEMPORARY table drop_tb(
rowNum int not null,
table_name VARCHAR(50) not null
);
insert into drop_tb       
      select @r := @r + 1 as rowNum,
             table_name
      from information_schema.TABLES as a,(select @r := 0 )as t
      where table_schema = (select DATABASE())
      and table_name like 'aopi_copy%'
      order by a.table_name ;

## 变量设置
set @index = 0;
set @count = (select count(0) from drop_tb) ;

## 遍历删除前缀为 aopi_copy 的表
WHILE @index <  @count DO
        
    set @index = @index + 1 ;
    set @tb_name = (
        select table_name from drop_tb as ibn
        where ibn.rowNum = @index
      ) ;
    
    set @drop_sql_tax = concat('drop table if exists ',@tb_name); 
      
    PREPARE distSQL FROM @drop_sql_tax ;
    EXECUTE distSQL;
    DEALLOCATE PREPARE distSQL ;

END WHILE;

drop table drop_tb;

end ;

call rush();

drop PROCEDURE if exists rush;

## THE END

验证流程

准备特定前缀八张表:
MYSQL 批量删除以特定前缀开头的表第1张

全选上述SQL并执行:
MYSQL 批量删除以特定前缀开头的表第2张

刷新表发现以aopi_copy 开头的表全部被删了。

当然这是drop table,你可以改成delete table,这样就只会删数据不会把表也删掉了,所以具体还是看情况吧!

免责声明:文章转载自《MYSQL 批量删除以特定前缀开头的表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jvm内存溢出性能调优高速PCB之EMC设计47则下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Atitit mysql redis mongodb 性能指标 目录 1.1. 二、 性能比较 1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s 2 1

Atitit mysql redis mongodb 性能指标   目录 1.1. 二、 性能比较 1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s 2 1.3. Mysql单表数据量达到5-10G时会出现明细的性能降级 2 1.4. Mongodb 最起码是插入速度是mysql俩倍数 2 1.5. 查询速度就...

MySQL开发规范

MySQL开发规范 1.  简介 持续借鉴、收集并整理一些开发规范和技巧,期望能更充分利用MySQL的特性,得到更好的性能。 规范是死的,人是活的。 现在定义的规范,是为以后推翻准备的。 1.1 目的 提供给开发人员参考,方便写成更有效率的开发。 1.2 范围 文档涉及的范围:需要基于MySQL做应用开发的人员。 1.3 定义、首字母缩写词和缩略语 暂无...

mysql中文乱码解决方式

近期项目使用到mysql。却突然出现了中文乱码问题。尝试了多种方案,最终解决乱码问题,总结一下解决方式,给遇到同样问题的人一点參考。 中文乱码的原因 1.安装mysqlserver的时候编码集设定有问题 2.创建数据库的时候编码集设定有问题 3.创建表的时候编码集设定有问题 4.client的编码集设定有问题 能够通过命令查看编码集: show...

MySQL update慢问题解决 规格严格

最近新做的一个项目要发布,结果在最终测试时候出问题了。后台的MySQL一直CPU使用率居高不行,通过: show processlist查看到一个SQL很异常,update XX set YY = KK where pK = ?; 这是一个简单的SQL,可是为什么他可能会影响问题呢。 背景: MySQL数据库,MyIsam表,按照时间建立一级分区,按照天建...

Oracle用户及角色的权限管理[Oracle基础]

1.查看全部用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; 3...

SQL serve 数据库--视图、事物、分离附加、备份还原

视图是数据库中的一种虚拟表,与真实的表一样,视图包含一系列带有名称的行和列数据。行和列数据用来自定义视图的查询所引用的表,并且在引用视图时动态生成。 视图只能用来查询,不能增删改;不允许出现重复列 1. 视图的概念 视图是从一个或者多个表中导出的,其行为与表相似,但视图是一个虚拟表。视图可以在已经存在的视图的基础上定义。在视图上用户可以使用SELECT语...