首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BOOLEAN或TINYINT混淆

BOOLEAN或TINYINT混淆
EN

Stack Overflow用户
提问于 2012-06-23 15:45:09
回答 5查看 193.4K关注 0票数 99

我正在为一个网站设计一个数据库,在这个网站上我只需要使用一个布尔数据类型来存储两个状态,真或假。我正在使用MySQL。

在使用phpMyAdmin设计数据库时,我发现我同时拥有BOOLEAN数据类型和TINYINT数据类型。

我看了不同的文章,有些人说TINYINT和BOOLEAN是一样的,没有区别。有人说,在MySQL中,BOOLEAN被转换为TINYINT。

我的问题是,如果它们都一样,为什么会有两个呢?它们中应该只有一个。

以下是我读过的文章的参考:

http://www.careerride.com/MySQL-BOOL-TINYINT-BIT.aspx

http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-23 15:49:55

MySQL没有内部布尔数据类型。它使用最小的整数数据类型- TINYINT。

BOOLEAN和BOOL是TINYINT(1)的等价物,因为它们是同义词。

尝试创建此表-

代码语言:javascript
复制
CREATE TABLE table1 (
  column1 BOOLEAN DEFAULT NULL
);

然后运行SHOW CREATE TABLE,您将获得以下输出-

代码语言:javascript
复制
CREATE TABLE `table1` (
  `column1` tinyint(1) DEFAULT NULL
)
票数 143
EN

Stack Overflow用户

发布于 2014-12-05 05:29:13

仅供php开发人员注意(我缺乏必要的堆栈溢出点来将其作为评论发布)……自动(静默)到TINYINT的转换意味着php从"BOOLEAN“列检索一个值作为"0”或"1",而不是预期的(我) true/false。

查看用于创建表的some_boolean的开发人员看到的内容类似于:"some_boolean NOT NULL DEFAULT FALSE“,当检索到包含该列的行时,可能会合理地期望看到true/false结果。相反(至少在我的php版本中),结果将是"0“或"1”(是的,字符串"0“或字符串"1",而不是int 0/1,谢谢PHP)。

这是一个nit,但足以导致单元测试失败。

票数 33
EN

Stack Overflow用户

发布于 2013-06-25 21:33:42

最新的MySQL版本具有新的BIT数据类型,您可以在其中指定字段中的位数,例如用作Boolean类型的BIT(1),因为它只能是01

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11167793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档