[Mysql]一对多关系是如何发挥作用的?

一个孩子只有一个妈妈,而一个妈妈可以有多个孩子,这是典型的一对多的关系,这里采用navicat图形化界面建立二者的关系。

第一步:创建mother表,如下图:

 第二步:创建children表,在children表中创建一个外键ch_mom_id,如下图:

 

第三步:在children表中添加外键约束 

选中表children>>选择外键>>添加好外键后 ctrl+s保存配置

mom_ch_lk是外键名,自己定义

这个外键表示将children表的ch_mom_id字段与mother表的mom_id关联起来,然后我们就可以通过child_id,找到对应的妈妈的id和name.

 

 最后一步:查看约束。新建查询-->查询创建工具-->双击children表和mother表 

 我们发现在children表和mother表之间添加了children.ch_mom_id=mother.mom_id的约束

   

接下来,添加几条数据,我们来看一下 一对多关系是如何发挥作用的,我们如何通过SQL语句查询出来,每个妈妈有几个孩子?

首先在mother表中增加3条数据:

 然后在children表中增加几条数据,注意ch_mom_id的取值范围只能是已经存在的mom_id(1,2,3)

  • 许莉莉有3个孩子,是张健,张良,张松
  • 张元元有1个孩子,是李靖
  • 黄梅梅有2个孩子,是王美丽,王英俊

最后我们通过SQL语句查询许莉莉有几个孩子

这里我们用多表查询,注意:最后我们想查询的结果是 孩子,所以最外层查询的表是children

SELECT
    * 
FROM
    children 
WHERE
    ch_mom_id IN ( SELECT mom_id FROM mother WHERE mom_name = '许莉莉' );

查询结果和我们的预期一致

参考文档:

Mysql 一对多关系建立(在navicat中)

原文地址:https://www.cnblogs.com/kaerxifa/p/12052569.html