首页 文章

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

提问于
浏览
1

我阅读了这里给出的答案: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

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

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

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

  • 2

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

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

  • 0

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

相关问题