关于MySQL INT类型长度的疑惑
-
疑惑一:int长度默认为11?
-
疑惑二:int(x),x是代表数值长度?如果插入一条记录为9位数值到int(4)类型的字段中,插入操作能否成功?如果插入操作成功,查询出来的值是多少?
每种整数类型所需的存储空间和范围 [官方文档:https://dev.mysql.com/doc/refman/5.7/en/integer-types.html]
[参考:https://stackoverflow.com/questions/5634104/what-is-the-size-of-column-of-int11-in-mysql-in-bytes]
type | Storage (Bytes) | Minimum Value Signed | Minimum Value Unsigned | Maximum Value Signed | Maximum Value Unsigned |
TINYINT | 1 | -128 | 0 | 127 | 255 |
SMALLINT | 2 | -32768 | 0 | 32767 | 65535 |
MEDIUMINT | 3 | -8388608 | 0 | 8388607 | 16777215 |
INT | 4 | -214784648 | 0 | 214784647 | 4294967295 |
BIGINT | 8 | -263 | 0 | 263 - 1 | 264 - 1 |
从上表可以看出INT是占4个字节大小,4Bytes -> 4 * 8 Bit ,通过换算,可以得出可以存储一个有符号的值 -2147483648 ~ 2147483647,无符号的值 0 ~ 4294967295;对于有符号的值的长度是11位,对于无符号的值的长度是10位,多的那个一位是符号位,当使用有符号展示的整数列宽带为11位,当使用无符号展示的整数列宽带位10位;
MySQL 支持用括号包含的数字指定整数数据类型的显示宽度, 比如 INT(4) 指定 INT 显示宽度为四位数,应用程序可以使用此可选的显示宽度来显示整数值,当该整数值的宽度小于为列指定的宽度,可用空格填充它们;
显示宽度也没有限制,可以被存储在列中的值的范围内,也不会阻止宽于列显示宽度的值正确显示。例如,指定为的列 SMALLINT(3)具有通常 SMALLINT的-32768 ~ 32767,并且超过三位的数字将完整显示三位数字所允许的范围之外的值;
如果配合 ZEROFILL 属性, 将用 0 来补齐. 比如 INT(4) ZEROFILL 字段, 数字 5 会被存储为 0005;
[参考:https://stackoverflow.com/questions/8892341/what-does-int5-in-mysql-mean]
除非列是UNSIGNED ZEROFILL,否则整数类型的列的显示宽度实际上不会执行任何操作;
创建一张zerofill_demo测试
查看代码
CREATE TABLE zerofill_demo (
id INT (11) NOT NULL AUTO_INCREMENT,
a INT (11) NOT NULL ,
b INT (11) UNSIGNED ZEROFILL NOT NULL ,
c INT (5) DEFAULT NULL ,
d INT (5) UNSIGNED ZEROFILL NOT NULL ,
e INT (15) DEFAULT NULL ,
PRIMARY KEY (`id`)
);
INSERT INTO zerofill_demo (a, b, c, d, e) VALUES (1, 1, 1, 1, 1);
INSERT INTO zerofill_demo (a, b, c, d, e) VALUES (1234567890, 1234567890, 1234567890, 1234567890, 1234567890);
参考:[ ]
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
· 用99元买的服务器搭一套CI/CD系统
· Excel百万数据如何快速导入?
· ShadowSql之.net sql拼写神器