对于MySQL中的标志,BIT(1)或TINYINT

use*_*531 8 mysql sql

我经常有表格,我需要存储一个标志,可以是1或0(真或假等).

我以前用过TINYINT.

我应该改用BIT(1)吗?为什么或者为什么不?

ins*_*ns0 11

如果你使用的mysql版本更大,那么5.0.3 Bit不再是别名,Tinyint但如果你创建了一个bit列,它仍会得到它1 Byte.

所以使用Bit(1)Tinyint(1)相等,如果你的表只有1 Bit列,你就没有任何好处.

但是如果你有更多的真/假列我建议你使用,Bit因为位列的每个值都放在相同的位置,1 Byte直到它被填充.

如果你使用低于5.0.3的mysql然后使用tinyintbit完全没问题.如果你查看bool类型的mysql文档,你会发现它是别名tinyint

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

BOOL,BOOLEAN

这些类型是TINYINT(1)的同义词.值为零被视为false.非零值被认为是真的:


BIT是TINYINT(1)的同义词.

  • 讨厌将它分解给每个人,但是,`tinyint(1)`将存储在-128和+127之间.1只是显示宽度. (4认同)
  • 如果使用`tinyint(1)unsigned`,则范围为0到255 (2认同)