请教个问题 MYSQL8.0以后 DECIMAL 是否需要额外两个字节存储...
请教个问题 MYSQL8.0以后 DECIMAL 是否需要额外两个字节存储符号和小数点?CREATE TABLE `test_decimal` (
`TOTAL` decimal(20,6) DEFAULT NULL,
`MONERY` decimal(10,2) DEFAULT NULL,
`ID` int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
insert into dba.test_decimal (TOTAL,MONERY) VALUES(99999999999999.88,70000000.09);
insert into dba.test_decimal (TOTAL,MONERY) VALUES(-99999999999999.88,-70000000.09);
SELECT * FROM dba.test_decimal;
# TOTAL MONERY ID
99999999999999.880000 70000000.09 1
-99999999999999.880000 -70000000.09 2按照官方文档计算
decimal类型的数据存储形式是,将每9位十进制数存储为4个字节,不够9位按下面表计算
Leftover Digits Number of Bytes
0 0
1-2 1
3-4 2
5-6 3
7-9 4
字段decimal(20,6),20-6=14,其中小数部分为6 就对应上表中的3个字节,而整数部分为14,14-9=5,就是4个字节再加上表中的3个字节
3+4+3=10个字节
符号和小数点 是不是要额外加2个字节?
官方文档没有找到说明
官档没说就是没有 :)
页:
[1]