Mysql批量修改表名实现去掉表前缀

 更新时间:2025年09月22日 09:25:20   作者:顾米楠  
文章介绍了在MySQL 5.7+中批量去除表名前缀"sw_"的方法,包括验证表名、版本检查和分步执行RENAME TABLE命令,建议先备份数据,通过查询生成重命名语句,逐个执行以避免操作中断,同时需注意应用代码对表名的依赖性

在项目中 我们可能遇到修改表名的需求 比如数据库中 部分表名带有前缀 部分表不带前缀 如果我想去掉这些带前缀的部分表名 应该怎么做呢?

使用代码层面修改太麻烦 不如直接使用mysql脚本达到目标 mysql版本要求在 5.7+

需求

将数据库中带有 sw_ 前缀的表 修改表名 去掉sw_

步骤

1. 先验证 执行前先运行以下查询确认要修改的表

SELECT table_name AS original_name, 
       SUBSTRING(table_name, 4) AS new_name
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name LIKE 'sw_%';

2. MySQL版本检查

SELECT VERSION();

注意 mysql版本需要 5.7+

3. 分步执行RENAME TABLE

-- 步骤1:创建临时表存储重命名映射
CREATE TEMPORARY TABLE temp_rename_mapping (
    old_name VARCHAR(255),
    new_name VARCHAR(255)
);

-- 步骤2:插入需要修改的表名
INSERT INTO temp_rename_mapping
SELECT 
    table_name AS old_name,
    SUBSTRING(table_name, 4) AS new_name
FROM 
    information_schema.tables 
WHERE 
    table_schema = DATABASE()
    AND table_name LIKE 'sw_%';

-- 步骤3:生成并执行单个RENAME语句(更安全的方式)
DELIMITER //
CREATE PROCEDURE batch_rename_tables()
BEGIN
    DECLARE done INT DEFAULT FALSE;
    DECLARE old_tbl VARCHAR(255);
    DECLARE new_tbl VARCHAR(255);
    DECLARE cur CURSOR FOR SELECT old_name, new_name FROM temp_rename_mapping;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    
    OPEN cur;
    read_loop: LOOP
        FETCH cur INTO old_tbl, new_tbl;
        IF done THEN
            LEAVE read_loop;
        END IF;
        
        SET @rename_sql = CONCAT('RENAME TABLE `', old_tbl, '` TO `', new_tbl, '`');
        PREPARE stmt FROM @rename_sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP;
    CLOSE cur;
END //
DELIMITER ;

-- 执行存储过程
CALL batch_rename_tables();

-- 清理
DROP PROCEDURE batch_rename_tables;
DROP TEMPORARY TABLE temp_rename_mapping;

亲测有效~

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql数据库sql优化原则(经验总结)

    mysql数据库sql优化原则(经验总结)

    这里的原则 只是针对mysql数据库,其他的数据库 某些是殊途同归,某些还是存在差异。我总结的也是mysql普遍的规则,对于某些特殊情况得特殊对待。在构造sql语句的时候养成良好的习惯
    2014-03-03
  • MySQL主备操作以及原理详解

    MySQL主备操作以及原理详解

    本文主要介绍了MySQL主备操作以及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • MySQL命令行导出与导入数据库

    MySQL命令行导出与导入数据库

    这篇文章主要为大家详细介绍了利用命令行MySQL导出数据库与导入数据库的例子,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • MySQL数据库自增主键的间隔不为1的解决方式

    MySQL数据库自增主键的间隔不为1的解决方式

    这篇文章主要介绍了MySQL数据库自增主键的间隔不为1的解决方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 使用PDO防sql注入的原理分析

    使用PDO防sql注入的原理分析

    这篇文章主要给大家介绍了关于使用PDO防sql注入的原理的相关资料,文中还给大家介绍了使用PDO的注意事项,通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-12-12
  • Mysql基础学习之LAG与LEAD开窗函数

    Mysql基础学习之LAG与LEAD开窗函数

    lead和lag是在SQL中用于创建窗口函数的两个常用函数,这篇文章主要给大家介绍了关于Mysql基础学习之LAG与LEAD开窗函数的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • CentOS7 64位安装mysql图文教程

    CentOS7 64位安装mysql图文教程

    这篇文章主要为大家详细介绍了CentOS7 64位安装mysql的图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • MySQL Shell的介绍以及安装

    MySQL Shell的介绍以及安装

    这篇文章主要介绍了MySQL Shell的介绍以及安装,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-04-04
  • Mysql 主从数据库同步(centos篇)

    Mysql 主从数据库同步(centos篇)

    Mysql 主从数据库同步(centos篇),需要的朋友可以参考下。
    2011-05-05
  • mysql出现ERROR问题:(2006, ‘MySQL server has gone away‘)

    mysql出现ERROR问题:(2006, ‘MySQL server has gone away‘)

    这篇文章主要介绍了mysql出现ERROR问题:(2006, ‘MySQL server has gone away‘),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09

最新评论