1

我阅读了这里给出的答案:MySQL 中的 tinyint、smallint、mediumint、bigint 和 int 有什么区别?,所以我现在知道他们如何存储数据,但我仍然不确定如何设置我的数据库。例如,如果我希望字段为 0 或 1(二进制,0 = 关闭,1 = 开启),我是否使用长度为 1 的 TINYINT?

我的主要问题是,LENGTH 设置决定什么?因为每个 NUMERIC 数据类型已经有自己的关联数据大小。

另外,SIGNED 和 UNSIGNED 有什么区别,我为什么要选择一个而不是另一个?

4

3 回答 3

2

SIGNED 和 UNSIGNED 之间的区别在于 UNSIGNED 您只能存储正数。

例如:关于 INT (Normal INTEGER) 值

有符号范围是 -2147483648 到 2147483647。无符号范围是 0 到 4294967295。如果您使用 PK auto_increment 值,那么在这种情况下您应该使用 UNSIGNED。

于 2012-07-27T12:56:29.677 回答
0

对于二进制字段,请使用BIT.

数字的长度指定逗号前后的精度。看这里

于 2012-07-27T12:54:22.920 回答
0

整数变量有 32 位来存储整数值。在有符号整数中,第一位保留用于存储正号或负号。因此,一个有符号整数只能使用 31 位来存储一个值,因此它的范围是 -2,147,483,648 到 +2,147,483,647。假设如果您的程序只需要存储大于 +2,147,483,647 的正整数。您需要考虑占用 8 位的长整数,这会导致内存浪费。相反,您可以使用无符号整数。在无符号整数中,没有为符号保留任何位,因此现在您有 32 位来存储值。无符号整数的唯一限制是您不能使用它来存储负值。32 位无符号整数的范围是 0 到 4,294,967,295。希望它能清除您对有符号和无符号整数的概念。

于 2015-01-15T10:39:45.407 回答