我应该为包含null,0或1的mysql列使用什么数据类型?

时间:2012-03-19 08:02:13

标签: mysql database null

我想将null, 0 or 1值存储在mysql列中。该列没有其他值。 null0应被视为不同的值。我将使用MyISAM或INNODB。

问题:我应该为mysql列使用哪种数据类型?

编辑:很多答案,谢谢!但有一点,如果有可能,人们会推断使用他们的数据类型而不是其他人?感谢。

4 个答案:

答案 0 :(得分:2)

使用boolean

实际被定义为TINYINT(1),但不要担心该实现细节。

答案 1 :(得分:1)

我会使用tinyint(1)作为列类型。

然而,不使用null,我会使用2或其他东西。唯一的原因是我在查询和搜索空值时遇到了很多麻烦。

答案 2 :(得分:1)

您可以对此列使用BIT数据类型。


如果您想使用TINYINT并且仍然只允许列中的01值(和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将是最好的。我通常使用的,效果很好。