MySQl int(1)、int(20) 的区别到底在哪里
常思一二,便得自然…
int(1)数据类型介绍
在MySQL中,INT(1)
是一种定义整数类型的数据字段,其中的数字表示显示宽度而不是存储范围。具体说,INT(1)
中的数字 1 表示显示宽度,但并不影响存储范围或值的合法性。这可能会让人感到困惑,因为 INT
数据类型本身已经有一个特定的存储范围,而这里的 (1)
实际上并没有改变这个范围。
以下是对 INT(1)
的详细介绍:
-
数据类型:
INT
是MySQL中的整数数据类型,表示整数值。它占据4个字节,可以存储从 -2^31 到 2^31-1 的整数(大约 -2.15 * 10^9 到 2.15 * 10^9)。 -
显示宽度 (Display Width):
(1)
中的数字是显示宽度,用于指定显示的字符个数。对于整数类型,这通常用于控制显示的位数。在INT(1)
中,这表示数字将以固定宽度显示,不足指定宽度的将使用零进行填充。但请注意,这仅是用于显示的,不影响实际存储或数值范围。例如,如果有一个
INT(1)
字段,存储了值 7,那么在检索时可能显示为 “7”,而不是 “007”。 -
对比: 使用显示宽度可能对排序和比较产生影响,但对于整数类型,它实际上并不改变值的范围或存储方式。在排序时,MySQL通常会忽略显示宽度。
总的来说,INT(1)
中的数字 1 表示显示宽度,但不改变存储范围。如果你希望限制整数的范围,应该使用适当范围的整数数据类型,而不是通过显示宽度来实现。
int(20)数据类型介绍
在MySQL中,INT(20)
是定义整数类型的数据字段,其中的数字 20 表示显示宽度(Display Width),但并不影响存储范围。与先前的例子 INT(1)
类似,INT(20)
中的数字并不改变整数的存储范围,而是用于控制显示的位数。
以下是对 INT(20)
的详细介绍:
-
数据类型:
INT
是MySQL中的整数数据类型,占据4个字节,可以存储从 -2^31 到 2^31-1 的整数(大约 -2.15 * 10^9 到 2.15 * 10^9)。 -
显示宽度 (Display Width):
(20)
中的数字是显示宽度,用于指定显示的字符个数。对于整数类型,这通常用于控制显示的位数。在INT(20)
中,这表示数字将以固定宽度显示,不足指定宽度的将使用零进行填充。但请注意,这仅是用于显示的,不影响实际存储或数值范围。例如,如果有一个
INT(20)
字段,存储了值 123,那么在检索时可能显示为 “00000000000000000123”。 -
对比: 使用显示宽度可能对排序和比较产生影响,但对于整数类型,它实际上并不改变值的范围或存储方式。在排序时,MySQL通常会忽略显示宽度。
总的来说,INT(20)
中的数字 20 表示显示宽度,但不改变存储范围。如果你希望限制整数的范围,应该使用适当范围的整数数据类型,而不是通过显示宽度来实现。这样的显示宽度通常用于在结果集中对齐数字,而不是改变其实际存储。
总结概括
当在MySQL中定义整数字段时,使用 INT(1)
和 INT(20)
中的数字部分(1和20)都是用于指定显示宽度,但不会改变实际存储范围。以下是对这两者的总结:
INT(1)
-
数据类型:
INT
表示整数数据类型,占据4个字节,可以存储从 -2^31 到 2^31-1 的整数。 -
显示宽度 (Display Width):
(1)
中的数字是显示宽度,用于指定显示的字符个数。不足指定宽度的将使用零进行填充。 -
影响:
- 不改变存储范围。
- 仅影响在结果集中的显示方式。
- 可能在某些情况下用于对齐数字,但对于整数类型,通常没有实际影响。
INT(20)
-
数据类型:
INT
表示整数数据类型,占据4个字节,可以存储从 -2^31 到 2^31-1 的整数。 -
显示宽度 (Display Width):
(20)
中的数字是显示宽度,用于指定显示的字符个数。不足指定宽度的将使用零进行填充。 -
影响:
- 不改变存储范围。
- 仅影响在结果集中的显示方式。
- 可能在某些情况下用于对齐数字,但对于整数类型,通常没有实际影响。
共同点:
-
存储范围: 无论显示宽度如何指定,
INT
数据类型的存储范围都是相同的。 -
排序: 在排序时,MySQL通常会忽略显示宽度。
总体而言,这两者的主要作用是控制显示宽度,而不是改变整数的实际存储范围。选择使用显示宽度通常是为了在结果集中对齐数字,而不是为了更改底层数据类型的行为。