Mysql tinyint(尺寸)、varchar(尺寸):“;“尺寸”;解释
我知道tinyint(1)和tinyint(2)的存储空间范围相同 唯一的区别是显示宽度不同。这是否意味着tinyint(1)将存储所有类型的整数,但仅正确显示从0到9的范围?tinyint(2)仅正确显示0到99 其中提到的最大尺寸是tinyint(255)。另外还有一些像varchar(500)类型的宽度。除非存储文章,否则在什么情况下,文本和整数都需要如此大的显示宽度?比如密码加密之类的 如果问题中的上述信息有任何错误,请纠正我 附加问题:显示宽度仅适用于char、varchar等,但不适用于整数类型Mysql tinyint(尺寸)、varchar(尺寸):“;“尺寸”;解释,mysql,sql,Mysql,Sql,我知道tinyint(1)和tinyint(2)的存储空间范围相同 唯一的区别是显示宽度不同。这是否意味着tinyint(1)将存储所有类型的整数,但仅正确显示从0到9的范围?tinyint(2)仅正确显示0到99 其中提到的最大尺寸是tinyint(255)。另外还有一些像varchar(500)类型的宽度。除非存储文章,否则在什么情况下,文本和整数都需要如此大的显示宽度?比如密码加密之类的 如果问题中的上述信息有任何错误,请纠正我 附加问题:显示宽度仅适用于char、varchar等,但不适
然而,为什么要费心加上“M”呢?因为对于整数来说,除了零填充之外,它在存储时不会有什么区别。您解决混淆的方法是- 在Mysql中,int(6)并不意味着它们最多可以存储6位数字。不超过999999 但是(6) 这表示一个字符列,最大长度为6个字符,例如: 房屋 如果我尝试在该列中存储单词“special”,MySQL会将该值切碎为“special”,因为原始单词有7个字符 无论如何,整数列都有一个允许的预设值范围。括号中的数字仅表示显示宽度 这可能仍然令人困惑,所以让我进一步解释 显示宽度是一个从1到255的数字。如果希望所有整数值以类似方式“显示”,则可以设置显示宽度: TINYINT[(M)][未签名][零填充]
M表示整数类型的最大显示宽度。最大显示宽度为255。显示宽度与类型可以包含的值的范围无关。对于浮点和定点类型,M是可存储的总位数 如果为数值列指定ZEROFILL,MySQL会自动将未签名属性添加到该列中 所以你们问题的答案是
create table foo
(
col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill tinyint(5)
)engine=innodb;
insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
select * from foo;
OUTPUT :-
+------+------+-----------------+
| col2 | col4 | col5notzerofill |
+------+------+-----------------+
| 01 | 0002 | 3 |
| 11 | 0012 | 14 |
| 123 | 0123 | 127 |
| 255 | 0255 | 127 |
+------+------+-----------------+
*所以请理解,在Mysql中,显示宽度仅适用于zerofill
*如果使用“不使用零填充”,则该选项无效
如果使用zerofill,mysql将检查显示宽度,如果不指定,mysql将自动为该列指定显示宽度。*对于浮点和定点类型,M是可以存储的总位数。它在实数中是有效的。以及与标准sql兼容的语法。b/c它在其他sql Server中工作。如果留空,mysql会自动分配它。如果这是你的答案,那么就把它标记为答案。很好的解释@developerCK你只是强调了你答案中的一些要点。