码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL根据表前缀批量修改、删除表


    注意:请先调试好,以及做好备份,再执行操作。

    批量修改表

    批量给前缀为 xushanxiang_content_ 的表增加一个 username 的字段:

    SELECT CONCAT('ALTER TABLE ',table_name,' ADD username varchar(40) NULL COMMENT "用户名";') FROM information_schema.TABLES WHERE table_name LIKE 'xushanxiang\_content\_%';

    可以得到下面一些 SQL 语句列表,也就是生成了批量修改表的语句:

    之后,我们再批量执行这些 SQL 语句即可。

    批量执行语句

    方式一、存储过程 while 循环

    # 参考代码:
    DROP PROCEDURE IF EXISTS canal_test; # 删除存储过程
    
    DELIMITER // # 设置分割符1
    CREATE PROCEDURE canal_test()
    BEGIN
    DECLARE i INT DEFAULT 0;
    WHILE i<=10 DO
       update users set mileage=i;
    SET i = i+1;
    END WHILE;
    END
    //
    DELIMITER; # 设置分割符2
    
    CALL canal_test(); # 调用存储过程
     

    方式二、source 命令

    待执行的 sql 文件为1.sql、2.sql、3.sql、4.sql等, 写一个batch.sql文件:

    source 1.sql;
    source 2.sql;
    source 3.sql;

    在 mysql 下执行 source batch.sql; (注意路径)

    如果只有一个 SQL 文件,例如 mysqltest.sql 脚本在 D 盘根目录, 进入 MySQL 的命令行窗口,直接输入如下命令即可批量执行脚本中的 sql 语句【 注:结尾不带分号执行 】

    source D:\mysqltest.sql

    方式三、在网站程序里动态执行

    // 参考用例,可能和您的实际情况不一样
    $sqlArr = $this->model->all("SELECT CONCAT('ALTER TABLE ',table_name,' ADD username varchar(40) NULL COMMENT \'用户名\';') FROM information_schema.TABLES WHERE table_name LIKE 'xushanxiang\_content\_%';");
    // 得到一个SQL语句的数组;
    foreach ($sqlArr as $key => $value) {
        foreach ($value as $k => $v) {
            $this->model->amd($v); // 依次执行sql
        }
    }
     

    批量删除

    参考 sql 如下:

    SELECT CONCAT('drop table ',table_name,';') FROM information_schema.TABLES WHERE table_name LIKE 'xushanxiang\_content\_%';

    接着,参考上面的进行批量执行即可。

    题外话,既然说到对数据表进行批量操作,那可能少不了数据表的复制。

    数据表的复制

    只复制表结构到新表

    create table 新表 like 旧表

    复制表结构及数据到新表

    create table 新表 select * from 旧表

    复制一条数据到结构相同的表

    INSERT INTO content_1 SELECT * FROM content_0 WHERE id=1

    复制部分字段到另一个表

    INSERT INTO table2 ( name , price ) SELECT name , price  FROM table1  WHERE id=5
    

    出处:MySQL根据表前缀批量修改、删除表 (xushanxiang.com)

  • 相关阅读:
    Flutter 07 框架和三棵树(Widgets、Elements和RenderObjects)
    python自动化之Python webservice协议
    前端实用案例-借助echarts实现内容自动向上轮播
    Steam中如何设置HTTP服务器防封
    程序员的数学课11 灰度实验:如何设计灰度实验并计算实验的收益?
    剑指offer64 求1+2+3+...+n
    带你玩转Redis 的String 数据类型
    Android 系统服务在测试流程中的应用
    国泰君安期货:基于分布式架构的智能推送系统,满足单日亿级消息处理量
    文心一言 VS 讯飞星火 VS chatgpt (116)-- 算法导论10.3 1题
  • 原文地址:https://www.cnblogs.com/xusx2014/p/16410553.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号