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

标签 mysql sql

表关系

table relationship

大家好,我需要帮助如何在 MYSQL 中的简单多对多关系表中输入和提取数据,因为我完全迷失了方向,即将使用 SET 数据类型,但我知道多对多是执行此操作的正确方法。我附上了一张表格布局的图片,以帮助您更好地理解。我有 3 张 table (衬衫、衬衫颜色、颜色)。衬衫表有 2 列(shirt_id,shirt),shirt2color(映射表)有 2 列(shirt_id,color_id),颜色表有 2 列(color_id,color)。

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

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

我知道这些可能完全是新手问题,但过去几周我在网上找不到这些问题的答案。感谢你们提供的任何帮助。

最佳答案

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)

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

关于mysql - 如何在MYSQL数据库的多对多表中插入和选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412464/

相关文章:

javascript - Node js和mysql将带逗号的数字转换为 float

php - Mysql数组数据操作

mysql - MySQL版本升级时GROUP BY无效

php - 如何选择字段的默认值

mysql - JOIN 在 MySQL 中如何工作?

PHP MySQL JSON 按数据组织

mysql - 通过 Delphi 使用 Web 数据库的最佳方式是什么?

sql - 使用 where 子句在 SQL Server 中进行透视

php - 字段中每个值的 MYSQL 计数

sql - SQL Server 2000 中的行到列