Php 如何在MySQL中存储布尔数据类型?
哪个数据类型用于在MySQL中存储Php 如何在MySQL中存储布尔数据类型?,php,mysql,database,mysqli,boolean-logic,Php,Mysql,Database,Mysqli,Boolean Logic,哪个数据类型用于在MySQL中存储true/false信息? 尤其是在编写和阅读PHP脚本时 随着时间的推移,我使用并看到了几种方法: 没有一个看起来是最优的,我更喜欢tinyint 0/1变体,因为PHP中的自动类型转换非常简单地为我提供布尔值 那么,有没有一种我忽略了的布尔值类型 您认为使用一种或另一种类型有什么优点/缺点吗?对于MySQL 5.0.3及更高版本,您可以使用BIT或TINYINT 对于mysql,您有一个更详细的答案使用类型BOOLEAN NOT NULL类型 像 如果布尔值
true/false
信息?
尤其是在编写和阅读PHP脚本时
随着时间的推移,我使用并看到了几种方法:
没有一个看起来是最优的,我更喜欢tinyint 0/1变体
,因为PHP中的自动类型转换非常简单地为我提供布尔值
那么,有没有一种我忽略了的布尔值类型
您认为使用一种或另一种类型有什么优点/缺点吗?对于MySQL 5.0.3及更高版本,您可以使用BIT或TINYINT
对于mysql,您有一个更详细的答案使用类型BOOLEAN NOT NULL类型 像 如果布尔值不起作用,请使用像 TINYINT(1)不为空 例如,
ALTER TABLE
productsADD
testTINYINT(1)不为空代码>
重要
TINYINT(1)TINYINT中的值是必需的。有很多选项
为了与许多不同的MySQL客户端、客户端库、ORM等兼容,我们已经确定
col TINYINT(1) UNSIGNED COMMENT 'boolean, ...'
除布尔值外,我们不使用TINYINT(1)UNSIGNED
数据类型。(我们可以添加notnull
)添加注释,第一个字符串是“boolean”,后面是实际描述
请注意,(1)
不会影响可存储的值的范围。它仍然可以保存从0到255的整数值。我们包含它只是为了帮助区分“boolean”类型和其他不是boolean的TINYINT值
我们将NULL值处理为NULL,将0
的值处理为“false”,任何其他值都被视为“true”。。。与MySQL在布尔上下文中解释整数值的方式相同
我们没有遇到任何无法处理整数类型的客户端。tinyint是一个不错的选择。下面是一个很好的答案:为什么需要(1)
后面的tinyint
?它不影响可存储的值的范围。是的,tiny int的范围从-128到127,因此需要指定是否使用tiny int。是的,可存储在TINYINT
中的值的范围是-128到127。这与可存储在TINYINT(1)
中的值范围相同。同样,没有解释为什么需要使用TINYINT(1)
vsTINYINT
。可以存储的值的范围是相同的。这有什么区别呢?请注意,一些客户端/客户端库/ORM映射不能很好地处理位
数据类型。但我们不会遇到整数类型的问题。
ALTER TABLE `products` ADD `test` BOOLEAN NOT NULL;
col TINYINT(1) UNSIGNED COMMENT 'boolean, ...'