如何将布尔字段添加到 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 中计算为 false
,1
计算为 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?的主要内容,如果未能解决你的问题,请参考以下文章