我正在使用MySQL版本5.1.49-1ubuntu8.1。它允许我定义两种不同数据类型的列:BOOL
和BOOLEAN
。这两种类型有什么区别?
答案 0 :(得分:126)
它们都是 TINYINT(1)的同义词。
答案 1 :(得分:22)
正如其他评论所述,它们是TINYINT(1)的同义词。
* 那么,他们为什么要在bool,boolean,tiny * int(1)之间进行区分?
主要是语义。
Bool和Boolean:MySQL默认将这些转换为tinyint类型。根据撰写本文时的MySQL语句,“我们打算在未来的MySQL版本中按照标准SQL实现完整的布尔类型处理。”
0 =假 1 = TRUE
TINYINT:占用一个字节;范围从-128到+127;或者,0 - 256。
通常在这个比较中提出: 在MySQL 5.0.3之后 - 位:使用8个字节并仅存储二进制数据。
答案 2 :(得分:4)
我刚注意到的一件事 - 在MySql中将列定义为BOOL,Spring Roo正确生成Java代码以将值解组为布尔值,因此可能指定BOOL可以添加一些值,即使它只是在性质上提示该列的预期用途。
答案 3 :(得分:2)
检查数据类型的MySQL文档概述:
http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html