我想将null, 0 or 1
值存储在mysql列中。该列没有其他值。 null
和0
应被视为不同的值。我将使用MyISAM或INNODB。
问题:我应该为mysql列使用哪种数据类型?
编辑:很多答案,谢谢!但有一点,如果有可能,人们会推断使用他们的数据类型而不是其他人?感谢。
答案 0 :(得分:2)
使用boolean
。
实际被定义为TINYINT(1),但不要担心该实现细节。
答案 1 :(得分:1)
我会使用tinyint(1)作为列类型。
然而,不使用null,我会使用2或其他东西。唯一的原因是我在查询和搜索空值时遇到了很多麻烦。
答案 2 :(得分:1)
您可以对此列使用BIT
数据类型。
如果您想使用TINYINT
并且仍然只允许列中的0
,1
值(和NULL
)(如果您以后想要在列表允许值中添加更多可能的值),您可以将InnoDB和外键约束用于只有2个值的引用表:
CREATE TABLE Two
( number TINYINT UNSIGNED NOT NULL
, PRIMARY KEY (number)
) ENGINE = InnoDB ;
INSERT INTO Two(number)
VALUES
(0), (1) ;
CREATE TABLE YourTable
( ...
, thisColumn TINYINT UNSIGNED NULL
, ...
, FOREIGN KEY (thisColumn) --- this ensures that the column can be only
REFERENCES Two(number) --- 0 or 1 or NULL
) ENGINE = InnoDB ;
答案 3 :(得分:0)
ENUM
将是最好的。我通常使用的,效果很好。