Mysql批量删除数据库
2016-12-19 20:32
120 查看
前言
删除数据库的命令对于有点数据库操作经验的人应该不会陌生,命令结构如下: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) ) BEGIN DECLARE _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; REPEAT FETCH _cursor INTO _cursorValue; IF (_done 1) THEN SET @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’);
执行过程显示如下:
我们再次查看一下数据库,结果如下:
根据结果可知,我们自定义的前四个数据库确实批量删除了!
总结
或许有更简便的方式来批量删除数据库,只是我还没有发现,欢迎大家给出更好的方式,我们来共同提高。相关文章推荐
- 删除数据库中重复数据的几个方法
- 如何在Struts 数据库应用程序中实现记录的删除、更新及链接
- 删除数据库中重复数据的几个方法
- 添加/删除/修改数据库内容
- 保存数据库中其他对象不变,删除数据库中所有数据的实现方法
- 删除数据库中多个表中相关记录的操作
- 删除数据库表有约束(constraint)的列
- 如何删除数据库中的冗余数据(翻译)
- 删除数据库中重复记录
- 如何在Struts 数据库应用程序中实现记录的删除、更新及链接(续)
- 怎么样实现三个月未登录过的帐号,自动从数据库里删除掉.
- 用Visual C#来修改和删除数据库记录
- 如何恢复SQL Server中删除的数据库
- (转)实现三个月未登录过的帐号,自动从数据库里删除掉
- 在c#中利用dataGrid实现数据库的多表查询,修改,删除
- 删除数据库中重复数据的几个方法
- 防止别人在QueryString中加入delete或其他字符删除你的数据库内容
- ASP.NET中数据库的操作初步----增加、删除、修改
- SQL指南-删除索引、表、数据库
- 用Visual C#来修改和删除数据库记录