gpt4 book ai didi

mysql - tinyint(大小),varchar(大小): "size" explaination

转载 作者:可可西里 更新时间:2023-11-01 07:33:00 34 4
gpt4 key购买 nike

我知道 tinyint(1) 和 tinyint(2) 具有相同的存储空间范围。

唯一的区别是显示宽度不同。这是否意味着 tinyint(1) 将存储所有类型的整数但只正确显示 0 到 9 的范围?而 tinyint(2) 只能正确显示 0 到 99?

并且提到最大大小是 tinyint(255)。还有其他像 varchar(500) 类型的宽度。除非存储文章,否则在什么情况下您需要这么大的文本和整数显示宽度?比如密码加密什么的?

如题中所写的上述信息有误,请指正。

补充问题:显示宽度仅适用于 char、varchar 等,但不适用于整数类型。

但是,为什么要费心输入“M”,因为对于整数来说,除了 zerofill 之外,它在存储方面没有任何区别?

最佳答案

解决困惑的办法是——

在 Mysql 中,int(6) 并不意味着它们最多可以存储 6 位数字。不超过 999999。

但是 CHAR(6)这意味着一个字符列,最大长度为 6 个字符,例如这些词:

房子

如果我尝试在该列中存储单词“special”,MySQL 会将值截断为“specia”,因为原始单词有 7 个字符。

无论如何,整数列都有一个预设的允许值范围。括号内的数字仅表示显示宽度。

这可能仍然令人困惑,所以让我进一步解释......

显示宽度是一个从 1 到 255 的数字。如果您希望所有整数值都以类似的方式“显示”,您可以设置显示宽度:

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

M表示整数类型的最大显示宽度。最大显示宽度为 255。显示宽度与类型可以包含的值范围无关,.对于 float 和定点数类型,M是可以存储的总位数。

如果您为数字列指定 ZEROFILL,MySQL 会自动将 UNSIGNED 属性添加到该列。

所以你的问题的答案是

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,它是无效的。

如果您使用 zerofill,则 mysql 将检查显示宽度,如果您不指定,则 mysql 将自动为该列指定显示宽度。*

关于mysql - tinyint(大小),varchar(大小): "size" explaination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17916277/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com