我可以使用什么数据类型来存储1,2,3,4,5
之类的值。我希望它们保持整数而不是字符串。我知道我可以使用varchar() or enum() or set()
,但这些都是字符串。我正在使用MySQL版本5.5.25
。存储的值也不固定。它可以是1
或1,2,3
答案 0 :(得分:2)
正确的数据类型是表格。你可以每行存储一个值。
通常,这将是一个关联表,因为值组将被分配给某个实体。类似的东西:
create table EntityNumbers (
EntityNumberId int auto_increment primary key,
EntityId int references Entities(EntityId),
Number int
);
然后,如果要返回列表,请使用group_concat()
:
select EntityId, group_concat(Number)
from EntityNumbers
group by EntityId;
答案 1 :(得分:1)
MySql没有这样的数据类型。可用于在单个字段中存储多个值的唯一数据类型是Set数据类型,它只存储字符串。
在关系数据库中,此问题的常见解决方案是附加表,其中包含原始表的外键,原始表中的每一行可能有多行。
所以而不是
id | name | values
1 | foo | 7,8,9
你会有
id | name
1 | foo
和
id | foreign_key | value
1 | 1 | 7
2 | 1 | 8
3 | 1 | 9
并使用
选择它们SELECT value from original_table join additional_table ON (id == foreign_key)
WHERE original_table.id == 1
导致3个结果行。
答案 2 :(得分:0)
tinyint() stores 1 byte
smallint() stores 2 bytes
mediumint() stores 3 bytes
int() stores 4 bytes