MySQL没有定义独特的布尔数据类型,而是选择为TINYINT(1)生成BOOL和BOOLEAN别名。这是为什么?为什么MySQL不定义布尔数据类型?
回答
如果我正确理解你的问题,这是因为Boolean values in MySql只是常量别名为1或0,并依赖于使用的基础类型。
一个布尔数据类型只是映射到一个1位的小整数。你可以在这里找到更多的:http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
这不解释*为什么*。在链接中,我读到“我们打算在未来的MySQL版本中按照标准SQL实现完整的布尔类型处理。”什么是优势?为什么没有完成? – ewernli 2010-03-06 10:06:50
这是因为SQL规范没有定义一个,直到SQL:1999,它没有强制执行。 MySQL在大多数组件之前只是为了允许关键字MSSQL,DB2和Oracle使用BIT和一些真/假常量来伪造它。
(基本上,它是说,虽然SQL规范规定它的发音一样的道理“ess queue ell,”我认识的人只是说“的续集,”因为我们是懒惰&了解情况。)
伟大的链接。它解释了真正的原因:关于如何处理NULL的无尽讨论。超过15年后,只有PostgreSQL真的支持它。对于这种通常要求的数据类型有多疯狂? – Nate 2015-11-03 23:54:05
这并不能解释为什么*。 – ewernli 2010-03-06 10:08:19