前言

删除数据库的命令对于有点数据库操作经验的人应该不会陌生,命令结构如下:

drop database DBName;

将上述命令中的DBName换成要删除的数据库的名字,就可以直接删除对应的数据库。但是有时候我们会出现这种困扰,就是测试的数据库一大堆,想要把它们都删掉时,采用一个个删除的方式有很浪费时间,有没有类似于like语句的模糊删除呢?很抱歉,在Mysql上我至今还没有找到,我们可能很想写出一下这种语句,drop database like '%test%';但是这句话是有语法错误的,我们只能采取其他的方式来达到我们的目的,既然sql的存储过程可以自定义操作逻辑,所以我们就拿它来开刀。

实现

本篇文章是针对于有一定数据库操作经验的人,而又不会批量删除数据库而写的,要想实现批量删除数据库,最起码要能分清哪些是数据库的命令行工具,知道在哪个界面输入sql命令等等,所以如果你拿到批量删除数据库的存储过程的源码,还是不知道如何入手的话,你可以给我留言,我会提供尽可能的帮助,那么接下来就是存储过程的源码

DROP PROCEDURE IF EXISTS drop_databases;
CREATE PROCEDURE drop_databases(IN paramDBNamePrefix VARCHAR(32),IN paramDBNameSuffix VARCHAR(32)
)
BEGINDECLARE _done INT DEFAULT 0;DECLARE _cursorValue VARCHAR(255);DECLARE _cursor CURSOR FOR SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME LIKE @_paramDBName;DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = 1;SET @_paramDBName = CONCAT("%", paramDBNamePrefix, "%", paramDBNameSuffix, "%");OPEN _cursor;REPEATFETCH _cursor INTO _cursorValue;IF (_done <> 1) THENSET @prepareStatement = CONCAT("DROP DATABASE ", _cursorValue);SELECT @prepareStatement;PREPARE stmt FROM @prepareStatement;EXECUTE stmt ;DEALLOCATE PREPARE stmt;END IF;UNTIL _done = 1 end REPEAT;CLOSE _cursor;END

其中存储过程的参数有两个,分别是paramDBNamePrefixparamDBNameSuffix表示待删除数据库的前缀和后缀,这两个参数会组成一个字符串’%paramDBNamePrefix%paramDBNameSuffix%’用作模糊查询的条件,比如两个参数分别是’test’和’10’的话,就会删除形如”%test%10%”的数据库,即数据库’test10’、’test101’、’test102’等等数据库都会删除。

示例

首先在test数据库中创建上述存储过程,创建成功后在数据库命令行工具中输入显示数据库命令:

show databases

显示如下图:


根据上述查询结果,假设我们要删除前4个自己创建的测试数据库,我们可以像下面这样执行命令:

call drop_databases(‘21test’, ‘11’);

执行过程显示如下:


我们再次查看一下数据库,结果如下:


根据结果可知,我们自定义的前四个数据库确实批量删除了!

总结

或许有更简便的方式来批量删除数据库,只是我还没有发现,欢迎大家给出更好的方式,我们来共同提高。

Mysql批量删除数据库相关推荐

  1. mysql批量删除数据库_数据库实现批量删除数据的操作方法(代码实例)

    本篇文章就给大家介绍数据库实现批量删除数据的操作方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助.package com.mescs.baseinfo.utils; import ...

  2. mysql批量删除进程_小程序批量删除云数据库里的数据

    我们用云开发的云数据库存数据,难免会遇到数据过多,或者一些过时数据要删除的需求.之前云开发删除数据库只能一条条的删除.要想批量删除很麻烦,近期云开发推出了批量删除数据的方法.甚至可以稍微改造下实现数据 ...

  3. Mysql批量删除大量数据

    一.Mysql批量删除大量数据 方案1 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE ...

  4. mysql批量删除5000条数据_mysql批量删除大量数据

    mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM s ...

  5. mysql 批量删除同一前缀的表

    mysql 批量删除同一前缀的表 mysql中还没有现成的工具可以实现批量删除相同前缀的表,所以我们可以通过构造语句来进行删除. 1.全部删除 将某个数据库下相同前缀的表全部删除,使用如下构造语句: ...

  6. MYSQL批量插入数据库实现语句性能分析

    MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( ...

  7. 【mysql】 删除数据库

    [mysql] 删除数据库 1.背景 2.手动删除数据库 1.背景 创建数据库参考: [mysql] 创建数据库 https://jn10010537.blog.csdn.net/article/de ...

  8. mysql 批量删除_Python接口测试之对MySQL的增、删、改、查操作(五)

    本文章主要来说python对mysql数据库的基本操作,前提是已搭建python环境和Mysql数据库的环境,这里不再详细介绍.在python的命令行环境下看是否可以导入MySQLdb,如果可以导入并 ...

  9. mysql批量删除数据sql语句_mysql批量删除数据sql语句详解

    1.like与 in批量删除指定记录 like语法 like主要是用来模糊查询了 sql = "delete from A where field like '%ABC%'" 这个 ...

最新文章

  1. 我所理解的卡尔曼滤波——公式推导与应用
  2. CCF-CSP 201712-2 游戏(C++实现)
  3. Mind Master Pro 8.0——安装教程
  4. nginx tomcat负载均衡配置
  5. 7-7 旅游规划 (8 分)
  6. C++中的面向对象(二)
  7. Angular自定义管道(过滤器)方法
  8. verilog 之数字电路 边沿检测电路
  9. git小乌龟安装_ROS系统安装与体验
  10. StanfordDB class自学笔记 (2) 关系模型
  11. vue 显示日期只显示年月_Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示...
  12. [4G+5G专题-144]: 一体化小基站- 5G小基站硬件建议架构概述
  13. “非常晚餐”第一期 “3D虚拟世界”是“黑客帝国”吗?
  14. 大学毕业生,关于转正定级和干部身份你懂吗?
  15. 阿里云 CentOS7.9 搭建 Hexo 个人博客教程
  16. speedoffice(Excel)如何全选表格
  17. OSPF实验知识点总结
  18. 2021年6月国产数据库大事记
  19. dblink(dblink是什么意思)
  20. 查看tcp 请求中的各个状态数据

热门文章

  1. 2大学英语四级关于计算机的图表作文,英语通大学英语四级考试版:图表作文的写作...
  2. introduction(html)(1-26)
  3. 莫名其妙的电脑F盘消失了,找回方法!!!
  4. 认识神经网络:卷积,归一化,优化和语料
  5. 档案信息化建设,这份法律法规清单,请收好
  6. 正则处理手机号码格式
  7. Freescale i.MX 6Q平台移植Android MNC
  8. 微信开发中消息回复的代码_消息中的消息
  9. 【经典算法】N皇后问题
  10. 计算机图形学 第10章 真实感图形