mysql批量修改表字段类型(生成修改sql)
文章目录
- >实例
- 需求
- 解决方案
- >详解
- 问题
- 1.查出所需要的列名
- 2.确定修改SQL
- 3.通过CONCAT函数批量生成修改SQL
- 4.执行生成的sql
- 注意
>实例
需求
已知,存在以上特征的五张表,表名有部分相同,每张表中的字段除数量不同外,其他特征都差不多,默认都为null。现在存在一个需求:
- 将这五张表中,所有使用了double或者int的字段修改为decimal类型,其他不变
解决方案
-- 定义并初始化变量
-- SELECT
-- @rownum := 0;
-- 生成sql
SELECT-- @rownum := @rownum + 1 rownum,TABLE_NAME,COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,CONCAT( 'ALTER TABLE ',TABLE_NAME,' modify column ', COLUMN_NAME, ' decimal default null "', COLUMN_COMMENT, '";' )
FROMinformation_schema.COLUMNS
WHEREtable_name like '%alarm_setting%' AND table_schema = 'csf' ;-- AND COLUMN_NAME LIKE '%JE%'
效果
如上,就生成了所有需要的sql,然后对生成的sql稍加处理就可以使用了。
>详解
以下内容来自: MySQL批量修改字段数据类型
问题
有一张表RULE
,里面有120个以JE
开头的字段,类型为tinytext
,发现字段长度不够,需要修改成text
类型。
1.查出所需要的列名
SELECTCOLUMN_NAME,DATA_TYPE,COLUMN_COMMENT
FROMinformation_schema.COLUMNS
WHEREtable_name = '表名' AND table_schema = '数据库名'
表名修改为RULE
,数据库名修改为glb
,添加条件查出JE
开头的字段
SELECTCOLUMN_NAME,DATA_TYPE,COLUMN_COMMENT
FROMinformation_schema.COLUMNS
WHEREtable_name = 'RULE' AND table_schema = 'glb' AND COLUMN_NAME LIKE '%JE%';
2.确定修改SQL
修改一个字段的sql为:
ALTER TABLE GLB_REPROT_RULE MODIFY JE1 TEXT;
3.通过CONCAT函数批量生成修改SQL
SELECTCOLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,CONCAT( 'ALTER TABLE RULE MODIFY ', COLUMN_NAME, ' TINYTEXT;' )
FROMinformation_schema.COLUMNS
WHEREtable_name = 'RULE' AND table_schema = 'glb' AND COLUMN_NAME LIKE '%JE%';
注意增加空格和分号
4.执行生成的sql
注意
修改后注释会丢失,需要重新填写注释。本例子的注释格式与字段名格式相似,可以借助变量实现注释。
-- 定义并初始化变量
SELECT@rownum := 0;
-- 生成sql
SELECT@rownum := @rownum + 1 rownum,COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,CONCAT( 'ALTER TABLE RULE MODIFY ', COLUMN_NAME, ' TINYTEXT COMMENT "金额', @rownum, '";' )
FROMinformation_schema.COLUMNS
WHEREtable_name = 'RULE' AND table_schema = 'glb' AND COLUMN_NAME LIKE '%JE%';
注意:注释需要用""包住,否则会出错
mysql批量修改表字段类型(生成修改sql)相关推荐
- Oracle应用之修改表字段类型
Mysql对于有数据和没数据的表字段类型都可以随意修改,不过oracle就不一样. 假如表A有个字段a,本来为number类型,然后我们想修改为varchar2类型. (1)字段a没数据的情况,改为v ...
- 修改表字段类型长度_PG修改字段
今天又遇到一个需求,要把PG中的字段类型修改一下.本来以为是个很简单的事情,毕竟Oracle就是一条指令就行了.但是在PG中改字段真的真的太难了. 当你修改表字段的时候,会报ERROR: cannot ...
- html 字段類型控制,db2修改表字段类型
db2 如何向表中增加,修改字段 如果此回答对楼主有帮助,给个喜欢好吗?啦 db2表字段修改 1:删除字段非空属性alter table XXX alter column XXX drop not n ...
- mysql中修改表字段名/字段长度/字段类型详解
在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...
- Mysql 使用【information_schema.COLUMNS】批量修改表字段注释
接手一个新项目,已经初步开发并上线了.因开发人员不按规范开发,数据库表中的字段注释基本没有,线上追加注释不方便,最后解决是在测试端生成相应的修改字段的Sql语句来同步线上的字段保证线上.线下数据库表. ...
- 修改mysql表的字段名_mysql中修改表字段名/字段长度/字段类型详解
在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...
- MySql数据库中,表字段新增,修改,删除
通过存储过程进行对mysql 数据库表字段增加,修改,删除 USE `mydatasql`;DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;DELIMITER ...
- mysql修改表字段名称
修改表字段名格式如下: alter table 表名 change column 旧字段名 新字段名 [约束条件]: alter table MESSAGE change column LeaveMe ...
- oracle 测试数据类型,oracle修改表字段的数据类型测试
oracle修改表字段的数据类型的测试 思路 将要更改类型的字段名改名新字段以备份: 根据需求,添加一个与要更改类型的字段名同名的字段(原字段已经改名), 然后更新数据, 最后删除改名备份的字段 脚本 ...
最新文章
- 字典 update()
- 网址http格式的拆分
- 递归调用cl_crm_oi_docx_transform_rt=process_node_cc
- 如何将Pcm格式的音频文件转换成Wave格式的文件
- Swing-BoxLayout用法-入门
- java中equals理解(2)
- QT 008 UI Add action 的方法
- hello bash
- kafka入门(一)简介
- 使用rsyslog+loganalzey收集日志显示客户端ip
- 疯狂java 李刚 pdf_Java开发教程 – 《疯狂Java讲义第4版》PDF及代码+李刚
- python对称加密算法库_对称加密算法
- 安装pip的三种方法
- 抗战史上知名的戚家刀PK日本真三武士刀刀型
- 图像分辨率+像素+尺寸+文件内存大小
- APM32F103 RTC内部时钟源报警中断例程测试
- LeetCode 28. 找出字符串中第一个匹配项的下标 -- 字符串编码成数字匹配
- Netty系列---源码实例
- 化繁为简——分解复杂的SQL语句
- MATLAB三点确定圆
热门文章
- 哈工大计算机学院答辩,人工智能与信息处理博士生培养方案-哈工大计算机学院-哈尔滨工业.DOC...
- 【EI连续检索】第五届人工智能与计算机科学国际会议(AICS2023)征稿中
- matlab学习 创建特殊矩阵(magic, pascal, vander, rand, randn, hilb, rosser, hadamard)
- 智能家居产业预测:2015年将是关键年
- 机械臂控制C语言程序,51单片机的6自由度机械臂 16路舵机控制 源码
- 判断汉字的数量(golang)
- Sql server 2008忘记sa登录密码重置
- html酷炫电子时钟效果,Html5时钟特效代码
- keil c51startup说明
- 车辆编队的队形控制方法及应用综述