MySQL - 如何插入具有多对多关系的表

2024-03-22

我有一桌人。每个人都拥有一项财产,并且许多人可能拥有某种财产。所以这是一个多对多的关系。这是架构:

CREATE TABLE persons (
  person_id int(11) NOT NULL AUTO_INCREMENT,
  firstname varchar(30) NOT NULL,
  lastname varchar(30) NOT NULL,
  PRIMARY KEY (person_id)
);

CREATE TABLE properties (
  property_id int(11) NOT NULL AUTO_INCREMENT,
  property varchar(254) NOT NULL UNIQUE,
  PRIMARY KEY (property_id)
);

CREATE TABLE has_property (
  person_id int(11) NOT NULL,
  property_id int(11) NOT NULL,
  PRIMARY KEY (person_id,property_id),
  FOREIGN KEY (person_id) REFERENCES persons (person_id),
  FOREIGN KEY (property_id) REFERENCES properties (property_id)
);

现在假设我想将这个人插入数据库:

  • 名字:“约翰”
  • 姓氏:“多伊”
  • 属性:'property_A','property_B','property_C'

persons

+-----------+-----------+----------+
| person_id | firstname | lastname |
+-----------+-----------+----------+
|         1 | John      | Doe      |
+-----------+-----------+----------+

特性

+-------------+------------+
| property_id |  property  |
+-------------+------------+
|           1 | property_A |
|           2 | property_B |
|           3 | property_C |
+-------------+------------+

有属性

+-----------+-------------+
| person_id | property_id |
+-----------+-------------+
|         1 |           1 |
|         1 |           2 |
|         1 |           3 |
+-----------+-------------+

到目前为止,我想到的最好的事情是在 person 表中进行定期插入:

INSERT INTO persons (firstname,lastname) VALUES ('John','Doe');

然后进行选择以查找我刚刚插入的人的 id

SELECT person_id FROM persons WHERE firstname='John' AND lastname='Doe';

为了插入其他两个表(因为我需要知道 person_id)。 但我认为一定有更好的方法,不是吗?


这就是我最终所做的。我希望它能帮助某人。

INSERT INTO persons (firstname,lastname) VALUES ('John','Doe');
SET @person_id = LAST_INSERT_ID();

INSERT IGNORE INTO properties (property) VALUES ('property_A');
SET @property_id = LAST_INSERT_ID();
INSERT INTO has_property (person_id,property_id) VALUES(@person_id, @property_id);

INSERT IGNORE INTO properties (property) VALUES ('property_B');
SET @property_id = LAST_INSERT_ID();
INSERT INTO has_property (person_id,property_id) VALUES(@person_id, @property_id);

INSERT IGNORE INTO properties (property) VALUES ('property_C');
SET @property_id = LAST_INSERT_ID();
INSERT INTO has_property (person_id,property_id) VALUES(@person_id, @property_id);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL - 如何插入具有多对多关系的表 的相关文章

  • 使用单个查询和每用户密码盐进行用户登录

    我决定使用存储在数据库中的每用户盐来实现用户登录 盐作为密码的前缀 该密码使用 SHA 进行哈希处理并存储在数据库中 过去 当我不使用盐时 我会使用典型的方法 使用用户输入的用户名和密码来计算查询返回的行数 然而 对于每个用户的盐 您需要先
  • 在 MySQL 表中存储用户密码的最佳 PHP 哈希方法?

    我已经阅读 Stack Overflow 问题大约 15 分钟了 每一个问题似乎都与我之前读到的问题相矛盾 Bcrypt SHA1 MD5 等 我目前对我的密码进行 MD5 但我想让我的数据库在发生泄露时更加安全 我知道这个问题已经被问了一
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • 删除重复的 SQL 记录以允许唯一键

    我在 MYSQL 数据库中有一个表 销售 该表理应强制执行唯一约束以防止重复 事实证明 首先删除欺骗并设置约束有点棘手 表结构 简化 id 唯一 autoinc 产品编号 目标是强制product id 的唯一性 我想要应用的重复数据删除策
  • 获取jdbc中表依赖顺序

    我在 MySQL 数据库中有一组表 A B C D 依赖关系如下 B gt C gt A 和 D gt A 也就是说 A 有一个 PrimaryKey C 有一个外键指向 A 的主键 B 有一个外键指向 C 的主键 类似地 D 有一个外键指
  • 使用 Python 开发时保护 MySQL 密码?

    我正在编写一个使用本地托管的 MySQL 数据库的 Python 脚本 该程序将以源代码形式提供 这样 MySQL 密码就肉眼可见 有没有好的办法来保护这个呢 这个想法是为了防止一些顽皮的人查看源代码 直接访问 MySQL 并做一些事情 好
  • 使用 Laravel Fluent 查询生成器从多个表中进行选择

    我正在重写一些 PHP MySQL 来与 Laravel 一起使用 我想做的一件事是使数据库查询更加简洁使用 Fluent 查询生成器 http laravel com docs database fluent但我有点迷失 SELECT p
  • 从本地 html/javascript 网站插入 mySQL 数据库

    我正在尝试做什么 我的程序的目的是插入数据local HTML JS网站变成online 非本地 mySQL数据库 到目前为止我尝试过的 我试图用来实现此目的的原始方法是让我的本地网站使用 javascript 通过在线发布数据PHP文件
  • MySQL 全文搜索之谜

    我们的网站上有一个使用 MySQL 全文搜索的简单搜索 但由于某种原因 它似乎没有返回正确的结果 我不知道这是否是 Amazon RDS 我们的数据库服务器所在的位置 或我们请求的查询的某种问题 这是数据库表的结构 CREATE TABLE
  • 可以有多个用户作为 MySQL 存储过程的定义者吗?

    我在 MySQL 存储过程方面遇到了一些困难 并且感到有点沮丧 我有一组由 Bob 创建的 SP 由于他是定义者 只有他才能看到它们的 CREATE 语句 修改它们等 Mary 可以在 MySQL Workbench 的架构中看到 Bob
  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • MySQL 过去 12 个月的月度销售情况,包括没有销售的月份

    SELECT DATE FORMAT date b AS month SUM total price as total FROM cart WHERE date lt NOW and date gt Date add Now interva
  • ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端

    Nodejs中使用mysql的问题 const mysql require mysql var connection mysql createConnection host localhost user root password 1234
  • 捕获动态表中 HTML 元素的值

    我有从数据库生成的以下动态表
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • 从 JSON 数组创建标记 php mySQL Google Maps v2 android

    我正在尝试从 mySQL 数据库在 Google Maps v2 上创建标记 但它不起作用 地图确实出现了 但没有标记 谁能告诉我出了什么问题以及我需要改变什么 我也尝试过让 getDouble 为 getDouble 0 和 getDou
  • Java MYSQL/JDBC 查询从缓存的连接返回过时的数据

    我一直在 Stackoverflow 中寻找答案 但似乎找不到不涉及 Hibernate 或其他数据库包装器的答案 我直接通过 Tomcat 6 Java EE 应用程序中的 MYSQL 5 18 JDBC 驱动程序使用 JDBC 我正在缓
  • Java/Hibernate - 异常:内部连接池已达到其最大大小,当前没有可用的连接

    我第一次在大学项目中使用 Hibernate 而且我还是个新手 我想我遵循了我的教授和我阅读的一些教程给出的所有指示 但我不断收到标题中的异常 Exception in thread main org hibernate Hibernate

随机推荐

  • 更新 javascript 表:未捕获类型错误:对象 [object Object] 没有方法 'tableRow'

    我正在制作一个联系人应用程序 它使用用户输入更新表格 但一旦输入数据 似乎无法更新表格 我只收到上面的错误 不知道如何改变方法 我尝试了很多不同的功能等 但没有运气 var nameField addressField emailField
  • MS Teams 客户端上内部托管的图像无法访问

    我们已经在我们的企业团队中启用了 Bot Framework 应用程序 并且我们想要使用AdaptiveCards向用户呈现丰富的内容 例如 我们正在发送AdaptiveImage包含指向企业形象店的url 示例代码 new Adaptiv
  • PHP 全局目录 UTF-8

    我正在尝试获取变量路径中的所有文件 atm 我正在使用 glob 但我只是找不到打开其中包含 的路径的方法 我尝试了很多解码 编码 但似乎都不起作用 当我更改文件名和变量中的 时 我得到了正确的答案 所以它必须是 utf8 字符 我猜 PH
  • AOSP的libc++.so和NDK的libc++_shared.so一样吗?

    我正在开发一款 Android 应用程序 其中有一个共享库 我在 Android Studio 中构建 我们称之为libA so 由供应商动态加载另一个共享库提供程序 我们称之为libB so 我知道我不应该在我的应用程序中使用多个 C 运
  • BitBlt 不在硬件加速模式下捕获窗口

    我目前正在使用 GDI32 dll 捕获窗口快照 尽管我遇到了硬件加速 Windows 的问题 我想知道是否有办法规避 我在这里发现了这段令人惊奇的代码 public static Image CaptureWindow IntPtr ha
  • 通过引用使用临时对象和参数的规则

    说我有一堂课 class A public A 和一个函数 void x const A s 我这样做 x A 有人可以向我解释有关通过引用传递临时对象的规则吗 就编译器允许的内容而言 在哪里需要 const 是否发生隐式复制等等 从尝试来
  • Rcurl 与 http 数据发布

    我想将以下curl调用移至Rcurl curl http myserver org stream H Authorization Basic XXXXXXXX H Connection keep alive data binary limi
  • 如何使用 Java 实例化 ArrayList 并通过反射添加项目?

    我正在编写一个将 xml 转换为 Java 对象的反序列化方法 我想动态地执行此操作 并避免编写对特定类型的硬编码引用 例如 这是我的一门课程的简化版本 public class MyObject public ArrayList
  • 优秀 Java 桌面应用程序的示例 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • EditText 与下面的建议列表

    我想在我的应用程序中实现 Google instant 之类的列表 顶部有一个 editText 下面有一个列表 每次用户输入新字符时都会更新该列表 你能指出我正确的方向吗 是否有任何小部件或任何我可以使用的东西 或者我是否必须删除列表并在
  • Firebase实时数据库单值侦听器多次触发

    我正在尝试从其他值侦听器中的数据库接收数据 类 MyFragment Fragment private lateinit var reference DatabaseReference override fun onCreate saved
  • 我如何知道哪些处理程序在 Promise 中抛出错误?

    假设我有如下承诺 p then Task1 then Task2 then Task3 catch errorHandler When Task2遇到错误 我怎么知道错误来自Task2 in catch 每个人 我自己研究了演示代码 希望大
  • 使用 Microsoft IIS 创建下载链接

    我想使用 Microsoft IIS 设置直接下载链接 我们已经有一个使用 IP 地址的网页 该地址指向我们服务器上的 web 文件夹 但我想在我的服务器上创建一个单独的位置 我可以在其中放置可下载的文件 以便客户端只需键入链接即可获取下载
  • 为什么在 std::vector 的初始化列表中调用复制构造函数?

    我有以下非常简单的课程 class Foo public Foo Foo const Foo delete Foo Foo void operator const Foo delete void operator Foo void dump
  • AnimationCurve.Evaluate - 按值获取时间

    有没有一种内置方法如何从 Unity3d 中的动画曲线中获取时间值 与Evaluate相反的方式 我需要实现这一目标 而不是从时间中获取价值 float time AnimationCurve Evaluate float value 一般
  • R update() 交互项未删除

    问题 我打算用交互项拟合线性模型 在估计 完整 模型后 我想删除不重要的交互项 但是 在我的模型上使用函数 update lm interaction 后 没有任何反应 请帮忙 Data library car data Prestige
  • 使用 OpenCV 输出作为网络摄像头 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 所以 我想编写一个程序 使 OpenCV 处理后的输出被视为网络摄像头 我想用它为 Skype 等程序创
  • 重命名导入的静态函数有什么问题?

    考虑以下 Scala 代码 object MainObject def main args Array String import Integer parseInt gt atoi println atoi 5 2 println args
  • 如何在流式传输之前知道音频歌曲的持续时间?

    我正在制作一个流音频歌曲的应用程序 在自定义媒体播放器中 我必须显示该音频文件的总持续时间 如果一首音频歌曲是 SDCard 我可以使用以下方法知道它的持续时间 MediaPlayer player public double durati
  • MySQL - 如何插入具有多对多关系的表

    我有一桌人 每个人都拥有一项财产 并且许多人可能拥有某种财产 所以这是一个多对多的关系 这是架构 CREATE TABLE persons person id int 11 NOT NULL AUTO INCREMENT firstname