如何在MYSQL数据库中的多对多表中插入和选择数据

时间:2018-07-18 23:53:51

标签: mysql sql

表关系

table relationship

您好,我需要如何在MYSQL中从简单的多对多关系表输入和提取数据的帮助,因为我完全迷失了,即将使用SET数据类型,但是我知道多对多是正确的方法。我附上一张桌子摆放的图片,以帮助您更好地理解。我有3张桌子(衬衫,shirt2color,颜色)。衬衫表有2列(shirt_id,tshirt),shirt2color(映射表)有2列(shirt_id,color_id),颜色表有2列(color_id,color)。

我已经创建了表和关系,但是如何在不手动映射的情况下输入和提取数据?没有INSERT语句,我可以在其中添加T恤并告诉数据库它可用的颜色,并且它将在数据库中添加“ T恤”和“红色,绿色和蓝色”并填充映射表自动吗?使用照片中的示例作为指导:(请注意,我想示例关系数据将如何存储在映射表中,如果没有,请告诉我)

  1. 插入T恤(红色,绿色和蓝色可用)的SQL语句是什么?
  2. 要选择并列出所有可用红色的衬衫,SQL语句是什么?
  3. 您如何处理衬衫条目上的重复颜色?例如,如果我添加另一件红色的衬衫,而我又不想使用color_id#4再次添加红色,则我想使用color_id#1。

我知道这些大概是新手问题,但过去几周我都无法在网上找到这些问题的答案。感谢你们提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

1)

您不能-您需要为每个表编写单独的插入语句。

2)

SELECT shirt.shirt_id, shirt.shirt FROM shirt
INNER JOIN shirt2color ON shirt.shirt_id = shirt2color.shirt_id
INNER JOIN color ON shirt2color.color_id = color.color_id AND color.color = 'Red'

3)

您可以在UNIQUE表的color列中添加color约束,这将防止创建重复的条目。当您要插入新项目时,应首先检查表中是否已经存在该颜色,然后在shirt2color表中使用该颜色。