mysql批量在表名加前缀
时间: 2024-09-20 18:14:57 浏览: 7
在MySQL中,如果你想要批量给所有表加上前缀,可以使用SQL的动态查询或者存储过程。这里有一个简单的例子,假设你想将所有表名`your_prefix_`添加到每个表名前面:
```sql
SET @prefix = 'your_prefix_';
SET @tables_sql = '';
SELECT GROUP_CONCATconcat('ALTER TABLE `', table_name, '` RENAME TO `', @prefix, table_name, '`;') INTO @tables_sql
FROM information_schema.tables
WHERE table_schema = DATABASE();
PREPARE stmt FROM @tables_sql;
EXECUTE stmt;
COMMIT;
-- 或者如果不想一次性执行所有,可以分开写
DELIMITER //
CREATE PROCEDURE add_prefix(IN prefix CHAR(255))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE();
DECLARE @table_name VARCHAR(255);
OPEN cur;
REPEAT
FETCH cur INTO @table_name;
IF NOT done THEN
PREPARE sql FROM CONCAT('ALTER TABLE `', @table_name, '` RENAME TO `', prefix, @table_name, '`;');
EXECUTE sql;
DEALLOCATE PREPARE sql;
END IF;
UNTIL done END REPEAT;
CLOSE cur;
END;;
DELIMITER ;
CALL add_prefix('your_prefix_');
```
请注意,这需要足够的数据库权限,并且在生产环境中使用时应谨慎,因为直接修改表结构可能会导致数据丢失。