何时使用不同的数字数据类型 - TINYINT / SMALLINT / MEDIUMINT / INT / BIGINT - MySQL

时间:2012-07-27 12:49:42

标签: mysql numeric unsigned signed sqldatatypes

我阅读了这里给出的答案:What is the difference between tinyint, smallint, mediumint, bigint and int in MySQL?,所以我现在知道他们如何存储数据,但我仍然不确定如何设置我的数据库。例如,如果我想要一个字段为0或1(二进制,0 =关闭,1 =打开),我是否使用长度为1的TINYINT?

我的主要问题是,LENGTH设置决定了什么?由于每种NUMERIC数据类型都有自己的关联数据大小。

另外,SIGNED和UNSIGNED有什么区别,为什么我要选择其中一个呢?

3 个答案:

答案 0 :(得分:2)

SIGNED和UNSIGNED之间的差异是使用UNSIGNED,您只能存储正数。

例如: 关于INT(正常INTEGER)值

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

答案 1 :(得分:0)

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

数字的长度指定逗号之前和之后的精度。见here

答案 2 :(得分:0)

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