Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mySQL中设置数据类型_Mysql - Fatal编程技术网

在mySQL中设置数据类型

在mySQL中设置数据类型,mysql,Mysql,我对关系数据库的了解比较有限,但是否有SQL命令可用于创建每行包含一个集合的列 我正在尝试创建一个包含两列的表。1表示特定ID,2表示与这些ID对应的集合 我读到 但是,集合数据类型要求您知道集合中可能包含哪些项。但是,我只希望有一个不重复的可变数量的项目列表。最好将该项目列表创建为第二个表中的多行。然后,您可以在列表中拥有您想要的任意多个项目,您可以对它们进行排序,搜索特定的项目,确保它们是唯一的,等等 另请参见我对否的回答。对于任意集,没有MySQL数据类型。可以使用包含逗号分隔列表的字符

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

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

我读到


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

最好将该项目列表创建为第二个表中的多行。然后,您可以在列表中拥有您想要的任意多个项目,您可以对它们进行排序,搜索特定的项目,确保它们是唯一的,等等


另请参见我对

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


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

MySQL不支持数组、列表或其他类似的数据结构。但是,它不支持字符串,因此使用that和
FIND_IN_SET()
函数: “设置”数据类型在这里不是一个好的选择
您可以使用“VARCHAR”并以CSV格式存储值。您可以在应用程序级别处理它们。
示例:在my_表(id,myset)中插入值(1,“3,4,7”);

你不想这样,仔细看,你可能想要第二个表,其中第二个(第三个,第四个,…)值将是一个新行,具有相同的
id
,新的/其他
。这是否意味着我需要为每个列表创建一个单独的表?因此,我需要为每个列表表使用不同的名称?是的。想想这个类比:对于应用程序代码中使用的每个值或数组,还需要一个不同的变量名!:-)我决不会建议某人在数据库列中存储分隔列表。请参见上面@BillKarwin的回复。请看他的另一篇帖子: