写点什么

数据类型于约束

用户头像
在即
关注
发布于: 2021 年 03 月 10 日
数据类型于约束

数字类型

观察 DECIMAL 超出精度时的保存结果

① 创建表,选取 DECIMAL 类型进行测试

mysql> CREATE TABLE my_decimal (d1 DECIMAL(4,2), d2 DECIMAL(4,2));

Query OK, 0 rows affected (0.01 sec)

② 插入的小数部分超出范围时,会四舍五入并出现警告

mysql> INSERT INTO my_decimal VALUES(1.234, 1.235);

Query OK, 1 row affected, 2 warnings (0.00 sec)


mysql> SHOW WARNINGS;

+-------+------+-----------------------------------------+

| Level | Code | Message |

+-------+------+-----------------------------------------+

| Note | 1265 | Data truncated for column 'd1' at row 1 |

| Note | 1265 | Data truncated for column 'd2' at row 1 |

+-------+------+-----------------------------------------+

2 rows in set (0.00 sec)

若小数部分超出范围,会进行四舍五入,

并出现 Data truncated(数据截断)警告。

③ 插入的小数部分四舍五入导致整数部分进位时,插入失败

mysql> INSERT INTO my_decimal VALUES(99.99, 99.999);

ERROR 1264 (22003): Out of range value for column 'd2' at row 1

若整数部分超出范围,数据会插入失败,

提示 Out of range value(超出取值范围)

④ 查询结果

mysql> SELECT * FROM my_decimal;

+------+------+

| d1 | d2 |

+------+------+

| 1.23 | 1.24 |

+------+------+

1 row in set (0.00 sec)


浮点数类型也可以设置位数和精度,

但仍有可能损失精度。

示例:float(8,2)

在实际使用时应避免使用浮点数类型,

以免出现不能人为控制的问题。

推荐:使用定点数类型并设置合理的范围可以使计算更为准确。


BIT(位)类型用于存储二进制数据,语法如下。

BIT(M)

M 表示位数,范围为 1~64。

7 位

字符 A →ASCII 65 1000001

(十进制)(二进制)

BIT(M) M=7

谢谢!

发布于: 2021 年 03 月 10 日阅读数: 15
用户头像

在即

关注

还未添加个人签名 2021.02.27 加入

还未添加个人简介

评论

发布
暂无评论
数据类型于约束