我可以使用什么数据类型来存储像1,2,3,4,5
. 我希望它们保持为整数而不是字符串。我知道我可以使用varchar() or enum() or set()
,但那些是字符串。我正在使用 MySQL 版本5.5.25
。存储的值也不是固定的。它可能是1
或1,2,3
问问题
2524 次
3 回答
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;
于 2013-08-31T12:38:33.580 回答
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 个结果行。
于 2013-08-31T12:38:42.283 回答
0
tinyint() stores 1 byte
smallint() stores 2 bytes
mediumint() stores 3 bytes
int() stores 4 bytes
于 2013-08-31T12:39:28.960 回答