为什么MySQL没有定义布尔数据类型?

时间:2010-03-06 01:56:17

标签: mysql boolean

MySQL没有定义明确的布尔数据类型,而是选择为TINYINT(1)创建BOOL和BOOLEAN别名。为什么会这样?

3 个答案:

答案 0 :(得分:5)

这是因为SQL规范在SQL:1999之前没有定义一个,并且没有强制执行。 MySQL只是为了允许关键字 - MSSQL,DB2和Oracle使用BIT和一些真/假常量来伪造它而领先于大部分包。

(基本上是出于同样的原因,虽然SQL规范声明它发音为“ess queue ell”,但我认识的每个人都只是说“续集”,因为我们很懒惰并且理解上下文。)

另请参阅:Comparison of different SQL implementations

答案 1 :(得分:2)

如果我正确理解你的问题,那是因为Boolean values in MySql只是别名为1或0的常量,并且取决于所使用的基础类型。

答案 2 :(得分:1)

布尔数据类型只是映射到1位的小整数。您可以在此处找到更多信息:http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html