我对关系数据库的了解比较有限,但是有一个SQL命令可用于创建每行包含一个集合的列吗?
我正在尝试创建一个包含2列的表。 1表示特定ID,第2表示与这些ID对应的集合。
我读到了
http://dev.mysql.com/doc/refman/5.1/en/set.html
但是,设置数据类型要求您知道集合中可能包含的项目。但是,我只想要一个不重复的可变数量的项目列表。
答案 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”);