[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中)
[Mysql]一对多关系是如何发挥作用的?的更多相关文章
- Mysql 一对多关系建立(在navicat中)
一个孩子只有一个妈妈,而一个妈妈可以有多个孩子,这是典型的一对多的关系,这里采用navicat图形化界面建立二者的关系. 第一步:创建mother表,如下图: 第二步:创建children表,在chi ...
- MySQL(12)---纪录一次left join一对多关系而引起的BUG
MySQL(11)---纪录一次left join一对多关系而引起的bug BUG背景 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行一对一的关系绑定.但是由于物流表在保存订单信息的时候 ...
- MySQL数据库 crud语句 ifnull() 创建新账户 备份数据库 一对多关系 多对多(中间表) 外键约束 自关联 子查询注意事项 DML DDL DQL mysql面试题 truncate与delete的区别
DML(data manipulation language): 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL ...
- 【个人笔记】《知了堂》MySQL三种关系:一对一,一对多,多对多。
一对一:比如一个学生对应一个身份证号.学生档案: 一对多:一个班可以有很多学生,但是一个学生只能在一个班: 多对多:一个班可以有很多学生,学生也可以有很多课程: 一对多关系处理: 我们以学生和班级之间 ...
- 纪录一次left join一对多关系而引起的BUG
纪录一次left join一对多关系而引起的BUG MySQL(11)---纪录一次left join一对多关系而引起的bug BUG背景 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行 ...
- 五、hibernate表与表之间的关系(一对多关系)
数据库表与表之间的关系 一对多:一个学校可以有多个学生,一个学生只能有一个学校 多对多:一个学生可以有多个老师,一个老师可以教多个学生 一对一:一个人只能有一个身份证号,一个身份证号只能找到一个人 一 ...
- [NHibernate]一对多关系(关联查询)
目录 写在前面 文档与系列文章 一对多查询 总结 写在前面 上篇文章介绍了nhibernate的一对多关系如何配置,以及级联删除,级联添加数据的内容.这篇文章我们将学习nhibernate中的一对多关 ...
- 【Java EE 学习 45】【Hibernate学习第二天】【对象的三种状态】【一对多关系的操作】
一.对象的三种状态. 1.对象有三种状态:持久化状态.临时状态.脱管状态(游离状态) 2.Session的特定方法能使得一个对象从一个状态转换到另外一个状态. 3.三种状态的说明 (1)临时状态:临时 ...
- hibernate一对多关系配置
一. 表信息 公司表 cId cName cAdress Null Null Null 表t_company 员工表 sId sName sAge cId Null Null Null Nul ...
随机推荐
- 归并排序C程序详解
#include <iostream> #include <cstring> #include <cstdlib> using namespace std; //归 ...
- Vue入门(三)——模拟网络请求加载本地数据
1.首先我们需要在webpack.dev.conf.js中const PORT = process.env.PORT && Number(process.env.PORT) 的后面追加 ...
- python中else与finally的总结
1.else的用法 对try...except的补充: else子句的使用比在子句中添加其他代码更好,try因为它避免了意外捕获由try... except语句保护的代码未引发的异常. for arg ...
- [Debug] Debugger Statements
For example you have the following code; function reverse(str) { let reversed = ""; for (l ...
- vue中使用v-chart改变柱状图颜色以及X轴Y轴的文字颜色和大小以及标题
1.html部分 <ve-histogram :tooltip-visible="true" :x-axis="xAxis" :y-axis=" ...
- Codeforces Round #346 (Div. 2) E题 并查集找环
E. New Reform Berland has n cities connected by m bidirectional roads. No road connects a city to it ...
- 路由器配置——OSPF协议(1)
一.实验目的:用OSPF协议使全网互通 二.拓扑图 三.具体步骤配置 (1)R1路由器配置 Router>enableRouter#configure terminalEnter configu ...
- 记录一:tensorflow下载安装
1.下载Anaconda,默认选项安装 2.验证 conda --v 3.下载 tensorflow 3.1 创建环境 conda create -n tensorflow python=3. ...
- Java 面试题 四
1.序列化 File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ ...
- LIUNX 安装 nginx
安装依赖 yum install gcc yum install pcre-devel yum install zlib zlib-devel yum install openssl openssl- ...