【发布时间】:2011-06-12 20:13:39
【问题描述】:
我正在使用 MySQL 版本 5.1.49-1ubuntu8.1。它允许我定义两种不同数据类型的列:BOOL 和BOOLEAN。这两种类型有什么区别?
【问题讨论】:
标签: mysql sqldatatypes
我正在使用 MySQL 版本 5.1.49-1ubuntu8.1。它允许我定义两种不同数据类型的列:BOOL 和BOOLEAN。这两种类型有什么区别?
【问题讨论】:
标签: mysql sqldatatypes
它们都是 TINYINT(1) 的同义词。
【讨论】:
正如其他 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 有什么区别?
Bit: Uses 8 bytes and stores only binary data. 是不正确的信息。当您向表中添加一个位列时,它将在每条记录中占据一个完整的字节,而不仅仅是一个位。当您添加第二个位列时,它将存储在同一个字节中。第 9 位列将需要第二个字节的存储空间。
我刚刚注意到的一件事 - 在 MySql 中将列定义为 BOOL 时,Spring Roo 正确生成 Java 代码以将值解组为布尔值,因此推测指定 BOOL 可以添加一些值,即使它只是本质上提示该列的预期用途。
【讨论】:
查看 MySQL 文档对数值类型的概述:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
【讨论】: