MySQL BOOL 和 BOOLEAN 列数据类型有啥区别?
Posted
技术标签:
【中文标题】MySQL BOOL 和 BOOLEAN 列数据类型有啥区别?【英文标题】:What's the difference between MySQL BOOL and BOOLEAN column data types?MySQL BOOL 和 BOOLEAN 列数据类型有什么区别? 【发布时间】:2011-06-12 20:13:39 【问题描述】:我正在使用 mysql 版本 5.1.49-1ubuntu8.1。它允许我定义两种不同数据类型的列:BOOL
和BOOLEAN
。这两种类型有什么区别?
【问题讨论】:
【参考方案1】:它们都是 TINYINT(1) 的同义词。
【讨论】:
亚当所说的。 MySQL 中没有实际的 BOOLEAN 类型。【参考方案2】:正如其他 cmets 所确定的,它们是 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个字节,只存储二进制数据。
【讨论】:
这并不能真正回答问题。BOOL
和 BOOLEAN
有什么区别?
之前的帖子已经确定两者都是 TINYINT(1) 的同义词。理想情况下,下一个问题是“那么,它们为什么要区分数据类型?”
@Sixthfore Bit: Uses 8 bytes and stores only binary data.
是不正确的信息。当您向表中添加一个位列时,它将在每条记录中占据一个完整的字节,而不仅仅是一个位。当您添加第二个位列时,它将存储在同一个字节中。第 9 位列将需要第二个字节的存储空间。【参考方案3】:
我刚刚注意到的一件事 - 在 MySql 中将列定义为 BOOL 时,Spring Roo 正确生成 Java 代码以将值解组为布尔值,因此推测指定 BOOL 可以添加一些值,即使它只是本质上提示该列的预期用途。
【讨论】:
【参考方案4】:查看 MySQL 文档对数值类型的概述:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
【讨论】:
以上是关于MySQL BOOL 和 BOOLEAN 列数据类型有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
MySql - 在多列中存储多个boolean时使用哪种列类型?