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。它允许我定义两种不同数据类型的列:BOOLBOOLEAN。这两种类型有什么区别?

【问题讨论】:

【参考方案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个字节,只存储二进制数据。

【讨论】:

这并不能真正回答问题。 BOOLBOOLEAN 有什么区别? 之前的帖子已经确定两者都是 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时使用哪种列类型?

mysql有布尔类型吗?

关于bool和Boolean

Boolean DataColumn状态不可编辑

Objective-C 中的 bool、Boolean 和 BOOL 之间有啥区别吗?

如何将 PostgreSQL 数据库中的所有 SMALLINT 列转换为 BOOLEAN?