Mysql批量删除数据库
前言
删除数据库的命令对于有点数据库操作经验的人应该不会陌生,命令结构如下:
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
其中存储过程的参数有两个,分别是paramDBNamePrefix
和paramDBNameSuffix
表示待删除数据库的前缀和后缀,这两个参数会组成一个字符串’%paramDBNamePrefix%paramDBNameSuffix%’用作模糊查询的条件,比如两个参数分别是’test’和’10’的话,就会删除形如”%test%10%”的数据库,即数据库’test10’、’test101’、’test102’等等数据库都会删除。
示例
首先在test数据库中创建上述存储过程,创建成功后在数据库命令行工具中输入显示数据库命令:
show databases
显示如下图:
根据上述查询结果,假设我们要删除前4个自己创建的测试数据库,我们可以像下面这样执行命令:
call drop_databases(‘21test’, ‘11’);
执行过程显示如下:
我们再次查看一下数据库,结果如下:
根据结果可知,我们自定义的前四个数据库确实批量删除了!
总结
或许有更简便的方式来批量删除数据库,只是我还没有发现,欢迎大家给出更好的方式,我们来共同提高。
Mysql批量删除数据库相关推荐
- mysql批量删除数据库_数据库实现批量删除数据的操作方法(代码实例)
本篇文章就给大家介绍数据库实现批量删除数据的操作方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助.package com.mescs.baseinfo.utils; import ...
- mysql批量删除进程_小程序批量删除云数据库里的数据
我们用云开发的云数据库存数据,难免会遇到数据过多,或者一些过时数据要删除的需求.之前云开发删除数据库只能一条条的删除.要想批量删除很麻烦,近期云开发推出了批量删除数据的方法.甚至可以稍微改造下实现数据 ...
- Mysql批量删除大量数据
一.Mysql批量删除大量数据 方案1 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE ...
- mysql批量删除5000条数据_mysql批量删除大量数据
mysql批量删除大量数据 假设有一个表(syslogs)有1000万条记录,需要在业务不停止的情况下删除其中statusid=1的所有记录,差不多有600万条, 直接执行 DELETE FROM s ...
- mysql 批量删除同一前缀的表
mysql 批量删除同一前缀的表 mysql中还没有现成的工具可以实现批量删除相同前缀的表,所以我们可以通过构造语句来进行删除. 1.全部删除 将某个数据库下相同前缀的表全部删除,使用如下构造语句: ...
- MYSQL批量插入数据库实现语句性能分析
MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下 CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( ...
- 【mysql】 删除数据库
[mysql] 删除数据库 1.背景 2.手动删除数据库 1.背景 创建数据库参考: [mysql] 创建数据库 https://jn10010537.blog.csdn.net/article/de ...
- mysql 批量删除_Python接口测试之对MySQL的增、删、改、查操作(五)
本文章主要来说python对mysql数据库的基本操作,前提是已搭建python环境和Mysql数据库的环境,这里不再详细介绍.在python的命令行环境下看是否可以导入MySQLdb,如果可以导入并 ...
- mysql批量删除数据sql语句_mysql批量删除数据sql语句详解
1.like与 in批量删除指定记录 like语法 like主要是用来模糊查询了 sql = "delete from A where field like '%ABC%'" 这个 ...
最新文章
- 我所理解的卡尔曼滤波——公式推导与应用
- CCF-CSP 201712-2 游戏(C++实现)
- Mind Master Pro 8.0——安装教程
- nginx tomcat负载均衡配置
- 7-7 旅游规划 (8 分)
- C++中的面向对象(二)
- Angular自定义管道(过滤器)方法
- verilog 之数字电路 边沿检测电路
- git小乌龟安装_ROS系统安装与体验
- StanfordDB class自学笔记 (2) 关系模型
- vue 显示日期只显示年月_Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示...
- [4G+5G专题-144]: 一体化小基站- 5G小基站硬件建议架构概述
- “非常晚餐”第一期 “3D虚拟世界”是“黑客帝国”吗?
- 大学毕业生,关于转正定级和干部身份你懂吗?
- 阿里云 CentOS7.9 搭建 Hexo 个人博客教程
- speedoffice(Excel)如何全选表格
- OSPF实验知识点总结
- 2021年6月国产数据库大事记
- dblink(dblink是什么意思)
- 查看tcp 请求中的各个状态数据