MySQL BOOL和BOOLEAN列数据类型之间有什么区别?


88

我正在使用MySQL版本5.1.49-1ubuntu8.1。它允许我定义两种不同数据类型的列:BOOLBOOLEAN。两种类型有什么区别?

Answers:



25

正如其他注释中所确定的,它们是TINYINT(1)的同义词。

*那么,为什么还要麻烦区分bool,boolean,tiny * int(1)?

主要是语义。

Bool和Boolean:MySQL默认将它们转换为tinyint类型。根据在撰写本文时发表的一条MySQL声明,“我们打算在将来的MySQL版本中根据标准SQL实现完整的布尔类型处理。”

0 =假1 =真

TINYINT:占用一个字节;从-128到+127; 或0-256。


通常在此比较中出现:MySQL 5.0.3之后-位:使用8个字节,仅存储二进制数据。


2
这并不能真正回答问题。BOOL和之间有什么区别BOOLEAN
2012年

7
较早的帖子已经确定两者都是TINYINT(1)的同义词。理想情况下,下一个问题是“为什么要区分数据类型?”
2012年

3
@SixthforeBit: Uses 8 bytes and stores only binary data.是错误的信息。当您在表中添加一个位列时,它将在每个记录中占据整个字节,而不仅仅是单个位。当您添加第二位列时,它将存储在同一字节中。第九位列将需要第二个字节的存储。
Kolyunya 2014年

4

我刚刚注意到的一件事-在MySql中定义为BOOL的列中,Spring Roo正确生成Java代码以将值解组为布尔值,因此推测指定BOOL可以添加一些值,即使它只是关于提示的性质列的预期用途。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.