为啥 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 不定义布尔数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

mysql有布尔类型吗?

为啥没有定义 Java 的布尔原始大小?

为啥没有定义 Java 的布尔原始大小?

为啥我不能将布尔数据类型与立即执行一起使用?

mysql创建布尔字段

mysql往数据库插入float类型的数据 为啥数字不对?