Mysql 批量修改表结构

本文介绍了一个使用MySQL存储过程批量将100张表的引擎从InnoDB更改为MYISAM的方法。通过定义存储过程,实现了自动化的表引擎转换,提高了工作效率。

     今天有个小需求,需要把100张表的引擎,从InnoDB改为MYISAM。想到要手工执行,简直头大,还好有存储过程。可以利用存储过程来批量处理。

-- 定义存储过程
DELIMITER //
CREATE PROCEDURE alter_table_enegine()
BEGIN
DECLARE `@i` INT(11);
DECLARE `@sqlstr` VARCHAR(2560);
SET `@i`=0;
WHILE `@i` < 100 DO
SET @sqlstr = CONCAT(
"ALTER TABLE pt_course_",
`@i`,
" ENGINE=MYISAM"
);
PREPARE stmt FROM @sqlstr;
EXECUTE stmt;
SET `@i` = `@i` + 1;
END WHILE;
END;
-- 执行存储过程
CALL alter_table_enegine();
-- 执行完,删掉临时用的存储过程
DROP PROCEDURE alter_table_enegine;

      中间那部分,也可以改为建表语句,那么就会变成批量生成表的了:)

MySQL 提供了多种用于修改数据库表结构的 SQL 语句,可以根据具体需求执行添加字段、删除字段、修改字段类型或名称、重命名表等操作。以下是一些常用的修改表结构的 SQL 语句: ### 添加字段 向现有表中添加新的字段,可以使用 `ADD COLUMN` 语句。例如,在表 `ind_catalog` 中添加一个名为 `test` 的字段,数据类型为 `VARCHAR(50)`,并设置为非空且带有注释: ```sql ALTER TABLE ind_catalog ADD COLUMN test VARCHAR(50) NOT NULL COMMENT '测试'; ``` ### 删除字段 如果需要从表中移除某个字段,可以使用 `DROP COLUMN` 语句。例如,删除表 `ind_catalog` 中的 `test` 字段: ```sql ALTER TABLE ind_catalog DROP COLUMN test; ``` ### 修改字段类型和注释 当需要更改字段的数据类型或更新其注释时,可以使用 `MODIFY` 语句。例如,将 `ind_catalog` 表中的 `id` 字段的数据类型更改为 `INT(10)` 并添加注释“主键”: ```sql ALTER TABLE ind_catalog MODIFY id INT(10) COMMENT '主键'; ``` ### 修改字段名称 若需更改字段的名字,同时保持或调整其数据类型,可以使用 `CHANGE COLUMN` 语句。例如,将 `ind_catalog` 表中的 `test` 字段重命名为 `newTest`,同时保持其数据类型为 `VARCHAR(50)`: ```sql ALTER TABLE ind_catalog CHANGE COLUMN test newTest VARCHAR(50); ``` ### 重命名表 对于需要更改表名的情况,可以使用 `RENAME` 子句。例如,将表 `old_name` 重命名为 `new_name`: ```sql ALTER TABLE old_name RENAME new_name; ``` ### 批量增加字段 除了单独添加每个字段外,还可以一次性添加多个字段。例如,向 `table_name` 表中批量添加 `state`、`creator`、`updater`、`create_time` 和 `update_time` 字段: ```sql ALTER TABLE table_name ADD ( `state` TINYINT(4) DEFAULT NULL COMMENT '数据状态 1 正常 2 停用 3删除', `creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者', `updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `update_time` DATETIME DEFAULT NULL COMMENT '更新时间' ); ``` 这些 SQL 语句能够满足大多数情况下对 MySQL 数据库表结构进行修改的需求,同时也便于在开发环境与生产环境之间同步表结构[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值