Mysql批量修改表名實(shí)現(xiàn)去掉表前綴
在項(xiàng)目中 我們可能遇到修改表名的需求 比如數(shù)據(jù)庫(kù)中 部分表名帶有前綴 部分表不帶前綴 如果我想去掉這些帶前綴的部分表名 應(yīng)該怎么做呢?
使用代碼層面修改太麻煩 不如直接使用mysql腳本達(dá)到目標(biāo) mysql版本要求在 5.7+
需求
將數(shù)據(jù)庫(kù)中帶有 sw_ 前綴的表 修改表名 去掉sw_
步驟
1. 先驗(yàn)證 執(zhí)行前先運(yùn)行以下查詢(xún)確認(rèn)要修改的表
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. 分步執(zhí)行RENAME TABLE
-- 步驟1:創(chuàng)建臨時(shí)表存儲(chǔ)重命名映射
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:生成并執(zhí)行單個(gè)RENAME語(yǔ)句(更安全的方式)
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 ;
-- 執(zhí)行存儲(chǔ)過(guò)程
CALL batch_rename_tables();
-- 清理
DROP PROCEDURE batch_rename_tables;
DROP TEMPORARY TABLE temp_rename_mapping;
親測(cè)有效~
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL復(fù)合查詢(xún)的實(shí)現(xiàn)示例
復(fù)合查詢(xún)語(yǔ)句是MySQL中一種非常重要的查詢(xún)方式,可以用于優(yōu)化查詢(xún)性能和控制查詢(xún)的結(jié)果集,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
SQL大表關(guān)聯(lián)優(yōu)化全攻略及常見(jiàn)問(wèn)題
在數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,SQL作為數(shù)據(jù)庫(kù)交互的核心語(yǔ)言,其重要性不言而喻,這篇文章主要介紹了SQL大表關(guān)聯(lián)優(yōu)化全攻略及常見(jiàn)問(wèn)題的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-11-11
MySQL注入繞開(kāi)過(guò)濾的技巧總結(jié)
這篇文章主要介紹了關(guān)于MySQL注入時(shí)繞開(kāi)過(guò)濾的技巧,文中通過(guò)圖文與示例代碼介紹的很詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02
mysql查詢(xún)條件not in 和 in的區(qū)別及原因說(shuō)明
這篇文章主要介紹了mysql查詢(xún)條件not in 和 in的區(qū)別及原因說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
一文分享30個(gè)MySQL中的查詢(xún)優(yōu)化實(shí)用技巧
查詢(xún)優(yōu)化的核心本質(zhì)是在消耗MySQL最少系統(tǒng)資源的前提下,實(shí)現(xiàn)最快的查詢(xún)響應(yīng)速度,本文分享了一些經(jīng)過(guò)實(shí)戰(zhàn)驗(yàn)證的核心優(yōu)化技巧,兼顧實(shí)用性和可操作性,希望對(duì)大家有所幫助2026-03-03
MySQL 觸發(fā)器定義與用法簡(jiǎn)單實(shí)例
這篇文章主要介紹了MySQL 觸發(fā)器定義與用法,結(jié)合簡(jiǎn)單實(shí)例形式總結(jié)分析了mysql觸發(fā)器的語(yǔ)法、原理、定義及使用方法,需要的朋友可以參考下2019-09-09

