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;
相关推荐
有一个好名字26 分钟前
从 3.6 亿订单表到毫秒级查询:分库分表指南
数据库·oracle
奥尔特星云大使3 小时前
MySQL 备份基础(一)
数据库·sql·mysql·备份·mysql备份
努力学习的小廉3 小时前
初识MYSQL —— 库和表的操作
数据库·mysql·oracle
浔川python社4 小时前
网络爬虫技术规范与应用指南系列(xc—1)
数据库·爬虫
代码不停5 小时前
计算机工作原理(简单介绍)
数据库·redis·缓存
偷心伊普西隆5 小时前
Python Access:删除数据库中指定的表和查询
数据库·python
小蒜学长6 小时前
springboot基于BS的小区家政服务预约平台(代码+数据库+LW)
java·数据库·spring boot·后端
简色6 小时前
预约优化方案全链路优化实践
java·spring boot·后端·mysql·spring·rabbitmq
zhangfeng11337 小时前
生物信息 R语言和 cytoscape 相互沟通的组件RCy3,构建cytoscape网络表 节点类型表 链接边的表,并推送到cytoscape
数据库·r语言·生物信息
小森( ﹡ˆoˆ﹡ )8 小时前
GPT_Data_Processing_Tutorial
数据库·gpt·mysql