1

我在数据库中的字段将只包含 3 个可能的值:0、1 和 2。所以,我想知道我应该使用什么数据类型?我发现了这个,似乎我应该使用 tinyint(1),但它的范围从 -127 到 126,所以我想知道这是我的选择还是实际上有更好的选择?

4

3 回答 3

5

tinyint(1) unsigned可能适合这个

于 2012-05-30T16:30:51.523 回答
0

不推荐,但是……我最初在想,如果空间真的是一个大问题,这可能值得探索。

如果您可以使用 NULL、0、1 而不是 0、1、2,那么布尔值/位也可以工作。

但是,看起来 boolean 和 tinyint 实际上是相同的。而且 tinyint 在 mysql 中的所有数据类型中占用空间最小。见链接

于 2012-06-08T04:01:36.600 回答
0

如果您希望确保输入的数字仅为 0、1 或 2,那么最好将 CHECK 约束添加到表中。

ALTER TABLE
    tableName
ADD CONSTRAINT 
    checkConstain
CHECK (columnName BETWEEN 0 and 2)

你可以看到一个在SQL Fiddel上工作的例子

于 2012-06-30T18:28:45.113 回答