MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

上网导航 2023-08-20 283 0条评论
摘要: MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究_sql批量条件删除...

因为在自测过程中,创建了很多数据库,一个个手动删除属实有点对不起程序员这个身份,那么有没有简单的sql语句操作来进行批量删除数据库呢?于是便有了本篇文章

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

上面图片是AI创作,未经允许,不可商用哦!

目录

前情提示

删库跑路需谨慎,

放弃一切亦不易。

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

思路

了解到数据库或表的信息都保存在MySQL内置的 information_schema数据库的SCHEMATA表中,因此是否可以通过like查询information_schema中的相关表名,拼接SQL,进行批量删除。

实操 批量删除数据库(以前缀为 ‘test_’ 示例)

SELECT CONCAT( 'DROP DATABASE ', SCHEMA_NAME, ';')
    FROM information_schema.SCHEMATA 
        WHERE information_schema.SCHEMATA.SCHEMA_NAME LIKE 'test_%';

如下图,查询结果是拼接好的sql,CV一下,执行即可

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

批量删除表(以前缀为 ‘df_’ 示例)

SELECT CONCAT( 'DROP TABLE ', TABLE_NAME, ';')
    FROM information_schema.TABLES
        WHERE information_schema.TABLES.TABLE_NAME LIKE 'df_%';

如下图,同样查询结果是拼接好的sql,CV一下,执行即可

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

到这里已经实现了批量删除操作,下面是引发的探究,如时间紧张可先赞后看,保持良好习惯!

MySQL 5.7 自带的四个数据库

在Mysql5.7版本中自带4个数据库:information_schema、mysql、performance_schema、sys。

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

mysql

mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。(常用的如在mysql.user表中修改root用户的密码)

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

performance_schema

主要用于收集数据库服务器性能参数。并且库里表的存储引擎均为PERFORMANCE_SCHEMA,而用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表。MySQL5.7默认是开启的。

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

sys

sys库所有的数据源来自:performance_schema。目标是把performance_schema的复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

information_schema

提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名、表名、列的数据类型和访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”) 该位置存储有关MySQL服务器维护的所有其他数据库的信息。

MySQL:想实现sql语句进行批量删除数据库或表,而引发的熬夜探究

information_schema数据库表简介

该INFORMATION_SCHEMA数据库包含几个只读表。它们实际上是视图,而不是基表,因此没有与它们关联的文件,并且不能在它们上设置触发器。另外,没有使用该名称的数据库目录。虽然你可以选择INFORMATION_SCHEMA与一个默认的数据库USE 语句,你只能读取表的内容,不能执行 INSERT、UPDATE或 DELETE。

对于大多数INFORMATION_SCHEMA表,每个MySQL用户都有权访问它们,但只能看到表中与用户具有适当访问权限的对象相对应的行。在某些情况下(例如,表中的ROUTINE_DEFINITION列 INFORMATION_SCHEMA ROUTINES),特权不足的用户会看到NULL。某些表具有不同的特权要求;为此,在适用的表格说明中提到了这些要求。例如,InnoDB表(名称以开头的表INNODB_)需要PROCESS特权。

分表

information_schema库共计有61张表。下面仅以批量删除数据库和表涉及到分表展开简单介绍

SCHEMATA表

模式是数据库,因此 SCHEMATA表提供了有关数据库的信息。该SCHEMATA表包含以下列:

模式名称也可以从该SHOW DATABASES语句中获得:

mysql> show databases like ‘mysql’;
±-----------------+
| Database (mysql) |
±-----------------+
| mysql |
±-----------------+
1 row in set (0.00 sec)
————————————————

TABLES表

该TABLES表提供有关数据库中表的信息。该TABLES表包含以下列:

参考

MySQL之自带四库之information_schema库

文章版权及转载声明:

作者:上网导航本文地址:https://www.90xe.com/post/2408.html发布于 2023-08-20
文章转载或复制请以超链接形式并注明出处技术导航

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏