int、decimal这种数据类型我发现定义后仍然可以超过定义的长度

比如 int(3) ,124576894这样的数字仍可以存
decimal(2.2)仍然可以存1.2323258这样的数字

1、是否意味着int和decimal后面不需要定义具体的数值范围呢,或者说没必要。定义了也没限制
2、定义和没定义数值范围是否没区别?

SQL mode 是不是把严格模式关掉了,虽然写入成功了,应该被截断写入了。

明天可以看下是什么模式,我看存下来的就收我想插入的,没有截断

int(3) 和int(100) 没区别,都是4个byte存储的

可以看看这里,感觉只是控制显示。

1 个赞

int设位长没有作用,最大的数还是2的32次方

只影响显示,不影响存储

原来是这样,我试试

int 是固定大小的,int(3) 是格式化展示补充的位数
比如 int(4),你数据是10,展示输出的10.00 ,格式化出来占位符类似

(https://docs.pingcap.com/zh/tidb/stable/data-type-numeric#integer-类型)

INTEGER 类型

INTEGER 类型,别名 INT。有符号数的范围是 [-2147483648, 2147483647]。无符号数的范围是 [0, 4294967295]

INT[(M)] [UNSIGNED] [ZEROFILL]

字段说明:

语法元素 说明
M 类型显示宽度,可选

SQL mode的配置导致的

SQL mode的配置的问题吧