-2

我可以使用什么数据类型来存储像1,2,3,4,5. 我希望它们保持为整数而不是字符串。我知道我可以使用varchar() or enum() or set(),但那些是字符串。我正在使用 MySQL 版本5.5.25。存储的值也不是固定的。它可能是11,2,3

4

3 回答 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 回答