如何将布尔字段添加到 MySQL?

Posted

技术标签:

【中文标题】如何将布尔字段添加到 MySQL?【英文标题】:How can I add a Boolean field to MySQL? 【发布时间】:2011-04-25 06:23:45 【问题描述】:

看来我应该使用 tinyint();但是不知道怎么实现?

问题是如果我需要在 mysql DB 中有一个布尔字段并使用 php 修改它的值,你的建议是什么

【问题讨论】:

布尔字段也可以解释为 1 和 0,因此具有 tinyint 字段将导致更快的数据库。如果你索引它甚至更快。以下所有这些答案对您来说都没有价值! @Felix @Matthew @Haim 干得好 @etbal 是的,确实很有帮助! 【参考方案1】:

是的,TINYINT(1) 是要走的路……您也可以使用同义词 BOOL or BOOLEAN(所以它没有区别)。

0 在 PHP 中计算为 false1 计算为 true(实际上,0 以外的任何其他数字计算为 true,但通常使用 1)。

【讨论】:

@Felix Kling 除了 0 以外的任何数字都不会计算为真 dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html @Viswanathan:实际上我在这种情况下谈论的是 PHP,而不是 MySQL。【参考方案2】:

我不喜欢 bool、BIT、TINYINT(1)。因为它们实际上都不是布尔值。您可以查看以下链接了解“为什么”:

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

我最好使用:ENUM ('false', 'true') not null - 作为数据类型。您可以从 PHP 传递“真”或“假”(作为字符串)。而且只需要1个字节就可以存储!

【讨论】:

为什么不用 ENUM ('0', '1') 代替 实际上字符串 'false' 在 PHP 中具有讽刺意味的是。 @tormuto 是的,你可以。这将有助于在阅读时在 PHP 中进行自动类型转换。但是使用 ENUM 时这样做并不安全,因为您可能会忘记从 PHP 传递字符串。如果有人错误地声明了 ENUM('1', '0') 会发生什么?我看到了很多代码,例如 ('yes', 'no')。【参考方案3】:

你说得对,一般的解决方案是tinyint(1)。可以简称为 BOOL:

CREATE TABLE example (
         flag BOOL
       );

【讨论】:

【参考方案4】:

你可以选择 tinyint(1) 或 bit

在该字段中插入 0 或 1

看这篇文章的区别:

Tinyint vs Bit

【讨论】:

【参考方案5】:

我认为,由于您实际上想对 mysql 表字段强制执行布尔 (0,1) 约束,因此最好的方法是取消枚举

CREATE TABLE table_name(
    boolean_field_name ENUM('0', '1')
);

【讨论】:

以上是关于如何将布尔字段添加到 MySQL?的主要内容,如果未能解决你的问题,请参考以下文章

如何将动态添加的表单字段发布到mysql数据库

mysql 数据库中的布尔字段

如何将字符串添加到 MySQL 中的字段值?

如何根据决策(布尔)字段在现有表单的视图中设置默认值?

具有 HTML5 布尔属性的 Java Spring Form 字段

如何使用布尔类型获取 DataMemberAttribute