在操作MySQL中,有时需要把现有表中的字段名全部改成小写,这在数据迁移、表结构调整等情况下很常见。下面介绍如何使用MySQL语句实现该操作。
ALTER TABLE 表名 CHANGE 字段名 新字段名 数据类型;
其中,表名和字段名都需要改成小写。如果不确定字段的数据类型,可以使用DESCRIBE语句查询。
DESCRIBE 表名;
通过查询表的结构可以确定字段的数据类型及其他信息。接下来,我们可以使用循环语句将表中所有字段名全部改成小写。
DELIMITER $$DROP PROCEDURE IF EXISTS `change_column_name`$$CREATE PROCEDURE `change_column_name`(IN tbl_name VARCHAR(200))BEGINDECLARE done_flag INT DEFAULT 0;DECLARE column_name VARCHAR(200);DECLARE column_type VARCHAR(200);DECLARE cur1 CURSOR FOR SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE table_name = tbl_name AND table_schema=database();DECLARE CONTINUE HANDLER FOR NOT FOUND SET done_flag = 1;OPEN cur1;REPEATFETCH cur1 INTO column_name, column_type;IF NOT done_flag THENSET @sql = CONCAT('ALTER TABLE ', tbl_name, ' CHANGE ', column_name, ' ', LOWER(column_name), ' ', column_type);PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;END IF;UNTIL done_flag END REPEAT;CLOSE cur1;END$$DELIMITER ;
以上为改变表中所有字段名的存储过程,使用DELIMITER指令改变语句结尾,如果不使用DELIMITER指令,则存储过程体内的语句会被解释成多行语句。
使用该存储过程需传入表名,示例:
CALL change_column_name('table_name');
使用以上方法可以简单快捷地将现有表的字段名全部改为小写。但需要注意表的外键、约束等是否受到影响,建议在操作前备份数据以便出现问题时及时恢复。