mysql修改字段类型

我要将

sql 复制代码
exchange_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True)

修改为

sql 复制代码
exchange_rate = models.DecimalField(max_digits=10, decimal_places=6, null=True, blank=True) 

要将 exchange_rate 字段从 DECIMAL(10,4) 修改为 DECIMAL(10,6)可以使用以下 SQL 语句:

sql 复制代码
ALTER TABLE xss_currency_exchange_rate
MODIFY COLUMN exchange_rate DECIMAL(10,6) NULL;

完整解释:

修改字段定义:

sql 复制代码
MODIFY COLUMN exchange_rate DECIMAL(10,6) NULL

DECIMAL(10,6):新的数据类型,总位数 10 位,其中 6 位小数

NULL:保持允许空值(对应 Django 的 null=True)

重要注意事项:

1.数据安全操作流程:

sql 复制代码
-- 1. 创建备份
CREATE TABLE xss_currency_exchange_rate_backup AS
SELECT * FROM xss_currency_exchange_rate;

-- 2. 检查现有数据
SELECT MIN(exchange_rate), MAX(exchange_rate), COUNT(*)
FROM xss_currency_exchange_rate;

-- 3. 执行修改
ALTER TABLE xss_currency_exchange_rate
MODIFY COLUMN exchange_rate DECIMAL(10,6) NULL;

-- 4. 验证结果
DESC xss_currency_exchange_rate;

2.数据类型变化影响:

原类型 DECIMAL(10,4):最大存储 999999.9999

新类型 DECIMAL(10,6):最大存储 9999.999999

整数部分容量从 6 位减少到 4 位,需确保现有数据整数部分不超过 4 位

3.数据兼容性检查:

执行修改前,检查是否有数据会超出新范围:

sql 复制代码
-- 查找整数部分超过4位的数据
SELECT *
FROM xss_currency_exchange_rate
WHERE exchange_rate >= 10000 OR exchange_rate <= -10000;
相关推荐
一只小白0002 分钟前
数据库对象实例化流程模板 + 常见错误
数据库
一江寒逸14 分钟前
零基础从入门到精通MySQL(下篇):精通篇——吃透索引底层、锁机制与性能优化,成为MySQL实战高手
数据库·mysql·性能优化
DevOpenClub19 分钟前
全国三甲医院主体信息 API 接口
java·大数据·数据库
一勺菠萝丶28 分钟前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
无忧智库32 分钟前
某大型银行“十五五”金融大模型风控与智能投顾平台建设方案深度解读(WORD)
数据库·金融
爱码小白33 分钟前
数据库多表命名的通用规范
数据库·python·mysql
huohuopro1 小时前
Hbase伪分布式远程访问配置
数据库·分布式·hbase
XDHCOM1 小时前
ORA-12169: TNS连接标识符过长,Oracle报错故障修复与远程处理
数据库·oracle
爬山算法1 小时前
MongoDB(86)如何使用MongoDB存储大文件?
数据库·mongodb
xcLeigh1 小时前
KES数据库表空间目录自动创建特性详解与存储运维最佳实践
大数据·运维·服务器·数据库·表空间·存储