在mySQL中设置数据类型

时间:2013-06-11 21:22:39

标签: mysql

我对关系数据库的了解比较有限,但是有一个SQL命令可用于创建每行包含一个集合的列吗?

我正在尝试创建一个包含2列的表。 1表示特定ID,第2表示与这些ID对应的集合。

我读到了

http://dev.mysql.com/doc/refman/5.1/en/set.html

但是,设置数据类型要求您知道集合中可能包含的项目。但是,我只想要一个不重复的可变数量的项目列表。

4 个答案:

答案 0 :(得分:14)

将项列表创建为第二个表中的多行会好得多。然后,您可以在列表中包含所需数量的项目,您可以对它们进行排序,搜索特定项目,确保它们是唯一的等等。

另请参阅我对Is storing a delimited list in a database column really that bad?

的回答

答案 1 :(得分:1)

不,任意集都没有MySQL数据类型。您可以使用包含逗号分隔列表的字符串;像FIND_IN_SET()这样的函数会对这些值进行操作。

但这是糟糕的数据库设计。如果您有一个开放式列表,则应将其存储在每个值为一行的表中。这将允许对它们编制索引,从而加快搜索速度。

答案 2 :(得分:0)

MySQL不支持数组,列表或其他类似的数据结构。但它确实支持字符串,所以使用它和FIND_IN_SET()函数: http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set

答案 3 :(得分:0)

“SET”数据类型在这里不是一个好选择。
您可以使用“VARCHAR”并以CSV格式存储值。您可以在应用程序级别处理它们 示例:INSERT到my_table(id,myset)值(1,“3,4,7”);