为啥 MySQL 不定义布尔数据类型?
Posted
技术标签:
【中文标题】为啥 MySQL 不定义布尔数据类型?【英文标题】:Why doesn't MySQL define a boolean data type?为什么 MySQL 不定义布尔数据类型? 【发布时间】:2011-01-24 08:46:49 【问题描述】:mysql 没有定义不同的布尔数据类型,而是选择为 TINYINT(1) 创建 BOOL 和 BOOLEAN 别名。为什么会这样?
【问题讨论】:
【参考方案1】:这是因为 SQL 规范直到 SQL:1999 才定义一个,并且没有强制执行。 MySQL 领先于大多数包只是因为允许关键字 - MSSQL、DB2 和 Oracle 使用 BIT 和一些真/假常量来伪造它。
(基本上是出于同样的原因,尽管 SQL 规范声明它的发音为“ess queue ell”,但我认识的每个人都只是说“sequel”,因为我们很懒且理解上下文。)
另见:Comparison of different SQL implementations
【讨论】:
很好的链接。它解释了真正的原因:关于如何处理 NULL 的无休止的讨论。 15 年后,只有 PostgreSQL 真正支持它。对于这种普遍要求的数据类型,这有多疯狂?【参考方案2】:如果我正确理解您的问题,那是因为 Boolean values in MySql 只是别名为 1 或 0 的常量,并且取决于所使用的基础类型。
【讨论】:
以上是关于为啥 MySQL 不定义布尔数据类型?的主要内容,如果未能解决你的问题,请参考以下文章