MySQL int(11) vs. int(anything else)
在MySQL数据库中,定义整数类型的字段时可以使用int关键字。但是,有些人可能会对于int后面的括号中的数字感到困惑,这里我们来了解一下int(11)与int(anything else)之间的区别。
阅读更多:MySQL 教程
int(11)
当使用int(11)时,11不是为整数类型字段分配的精度。它是用来指定显示宽度的。具体来说,它表示该字段应该使用的字符数,用于显示。(注意:字符数与实际存储大小不一定相同)。
例如,如果您在表中定义一个int(11)类型的字段,它可以存储任何11个数字以内的整数。但是,如果您在该字段中存储的数字小于11位,则MySQL将使用前导零来填充不足的位数,以使该字段的宽度保持一致。例如,如果您在一个int(11)字段中存储数字42,MySQL将将其视为’00000000042’。
int(anything else)
相比之下,如果您定义一个int字段并省略括号中的数字,则MySQL将默认将该字段定义为使用最小的宽度。这意味着,如果在该字段中存储数字42,则MySQL只会将其存储为’42’。
由于int字段本身的大小已经足够存储最大的整数,因此省略括号中的数字是可行的。但是,如果您希望使用一个不同的显示宽度或存储更大的数字,则可以通过在括号中提供适当的数字来进行调整。
示例
为了更好地理解这两种数据类型之间的区别,请考虑以下示例:
CREATE TABLE integer_test (
id int(11) NOT NULL AUTO_INCREMENT,
small_number int NOT NULL,
large_number int(20) NOT NULL,
PRIMARY KEY (id)
);
在上面的示例中,我们创建了一个名为integer_test的表,其中包含三列:id、small_number和large_number。在该表中,我们定义了id列为11位宽度的int字段,small_number列使用默认的最小宽度int,而large_number列定义为20位宽度的int字段。
结论
在MySQL中,使用int(11)与使用int的主要区别在于要求所存储数据的字符数。如果要使用不同的显示宽度或存储更大的数字,则可以在括号中提供适当的数字。不过,如果您只需要定义一个足够存储最大整数的字段,则可以省略括号中的数字。
极客教程