mysql 如何删除数据库中所有的表
程序员文章站
2024-03-09 08:02:52
...
mysql 如何删除数据库中所有的表
需求:
今天写个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语句,你需要再运行一次这个结果集
就可以删除所有的表而不删除数据库了
例如:
①新建查询:
②返回的结果集,复制出来再运行一次。(复制,可以shift批量选中,也可以导出)
复制出来,贴到查询中,再点击运行。即可删除所有表。
方法2(常用)
在Navicat Premium(或 Navicat for MySQL)中,可以批量选中,点击删除表。一步到位!!!
方法3(最方便):
直接运行删除数据库的sql,和创建数据库的sql
drop database if exists activiti_db;
create database activiti_db;
方法4(鄙人之见):
使用行转列的方式生成要删除的sql,一次性执行;
流程如下,此处数据库为activiti_db:
1.行转列的查询
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此处要替换条),替换成空格,操作如下图:
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 '%.....%'
上一篇: Java 8 新特性终极版指南详解
推荐阅读
-
mysql 如何删除数据库中所有的表
-
mysql查询库中所有的表名,表中所有的字段名,查询库中有含有某个字段的表
-
数据库技术课程复习4---MySQL语言(1)(表的创建,插入,修改,删除)
-
教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感
-
教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感
-
MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
-
Python如何读取MySQL数据库表数据
-
MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
-
Sql Server如何得到数据库中所有表的列表
-
sql server 删除数据库中所有表数据