mysql 中文删除表_mysql 如何删除数据库中所有的表-Go语言中文社区

需求:

今天写个Activiti 工作流的demo做测试,想删除数据库所有表。特地百度了下,找到了该 博文【mysql 如何删除数据库中所有的表】,在此做个总结,并添加了方法3,方法4做个笔记,希望对大家有用。此处数据库为 activiti_db

方法1(他人之见)

SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')

FROM information_schema.tables

WHERE table_schema = 'mydb';

mydb换成你想删除的数据库的名字

这样可以生成一个批量处理的sql语句,你需要再运行一次这个结果集

就可以删除所有的表而不删除数据库了

例如:

00ff3eb50e2794110961ba83a8859696.png

①新建查询:

29b353f4ca966404d7587c462bb5c0d5.png

②返回的结果集,复制出来再运行一次。(复制,可以shift批量选中,也可以导出)

887b1b29e45fae6dcc3386d8971bc8c2.png

复制出来,贴到查询中,再点击运行。即可删除所有表。

beb2a4c14ff0a6660bc799d65bac6d27.png

9c1d09706d9bf78c3ef26d29d36ad211.png

方法2(常用)

在Navicat Premium(或 Navicat for MySQL)中,可以批量选中,点击删除表。一步到位!!!

32c3572c6ea82c033220e16ebafd13d4.png

460bbd9e4ebf987dcd5a177d11325ad1.png

方法3(最方便):

直接运行删除数据库的sql,和创建数据库的sql

drop database if exists activiti_db;

create database activiti_db;

方法4(鄙人之见):

使用行转列的方式生成要删除的sql,一次性执行;

流程如下,此处数据库为activiti_db:

1.行转列的查询

0defc82720942ad1090b78b651e353f3.png

sql如下:

SELECT

group_concat(concat( ' ', a.sql, ' ' ))

FROM

(

SELECT concat( 'DROP TABLE IF EXISTS ', table_name, ';' ) AS "sql"

FROM information_schema.TABLES WHERE table_schema = 'activiti_db'

) AS a;

2 复制查询出的数据

第一步查询的数据如下

DROP TABLE IF EXISTS act_evt_log; , DROP TABLE IF EXISTS act_ge_bytearray; , DROP TABLE IF EXISTS act_ge_property; , DROP TABLE IF EXISTS act_hi_actinst; , DROP TABLE IF EXISTS act_hi_attachment; , DROP TABLE IF EXISTS act_hi_comment; , DROP TABLE IF EXISTS act_hi_detail; , DROP TABLE IF EXISTS act_hi_identitylink; , DROP TABLE IF EXISTS act_hi_procinst; , DROP TABLE IF EXISTS act_hi_taskinst; , DROP TABLE IF EXISTS act_hi_varinst; , DROP TABLE IF EXISTS act_id_group; , DROP TABLE IF EXISTS act_id_info; , DROP TABLE IF EXISTS act_id_membership; , DROP TABLE IF EXISTS act_id_user; , DROP TABLE IF EXISTS act_procdef_info; , DROP TABLE IF EXISTS act_re_deployment; , DROP TABLE IF EXISTS act_re_model; , DROP TABLE IF EXISTS act_re_procdef; , DROP TABLE IF EXISTS act_ru_event_subscr; , DROP TABLE IF EXISTS act_ru_execution; , DROP TABLE IF EXISTS act_ru_identitylink; , DROP TABLE IF EXISTS act_ru_job; , DROP TABLE IF EXISTS act_ru_task; , DROP TABLE IF EXISTS act_ru_variable;

3. 使用Navicat、idea 等数据库软件

使用软件查找英文逗号(行转列出现的,每一行数据以逗号隔开,so此处要替换条),替换成空格,操作如下图:

22dfbaa3845a0b88fdfb425c31ceacce.png

4. 执行sql

执行第3步替换后的sql,这里推荐使用navicat的,可以批量执行;

5. 可能出现的问题:

若出现以下报错,说明该表关联到其他的主键,可以将该sql复制放在最后面执行;如果数据库中表没有物理关联,则不会出现该错误;

DROP TABLE IF EXISTS act_ge_bytearray

> 1217 - Cannot delete or update a parent row: a foreign key constraint fails

> 时间: 0s

6.总结

此方法不一定要删除所有的表,在第一步 如下,查询的是activiti_db数据库所有表名,可在此添加where判断,满足只删除某些表的功能;

SELECT concat( 'DROP TABLE IF EXISTS ', table_name, ';' ) AS "sql"

FROM information_schema.TABLES WHERE table_schema = 'activiti_db'

where table_name like '%.....%'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值