[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 ...
随机推荐
- 关于linux一些备份、还原,压缩,归档的命令
15.1 gzipgzip(1) 是GNU的压缩程序.它只对单个文件进行压缩.基本用法如下:$ gzip filename程序执行以后,文件名会变成filename.gz,而且一般情况下大小会比原文件 ...
- 04_Redis_Hash命令
一:Redis 哈希(Hash) 1.1:Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. 1.2:Redis 中每个 hash 可以存储 ...
- 9. A Pythonic Object
Thanks to the Python data model, your user-defined types can behave as naturally as the built-in typ ...
- 7. Function Decorators and Closures
A decorator is a callable that takes another function as argument (the decorated function). The deco ...
- 移动端meta常用的设置
1.qq强制横屏或者竖屏显示 : <meta name="x5-orientation" content="portrait ||andscape&quo ...
- 作业九——DFA最小化
1.将DFA最小化:教材P65 第9题 I {1, 2, 3, 4, 5} {6, 7} {1, 2}b->{1, 2, 3, 4, 5} {3, 4}b->{6, 7} {5}b-> ...
- LINUX查看内存使用情况 free
# free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KB used 已使用的内存 7852484KB free 空闲的内存数 205480KB shared 当 ...
- BZOJ 1022 / P4279 Luogu [SHOI2008]小约翰的游戏 (反Nim游戏) (Anti-SG)
题意 反Nim游戏,两人轮流选一堆石子拿,拿到最后一个的输.问先手是否必胜. 分析 怎么说,分类讨论? 情形1:首先考虑最简单的情况,所有石子数都为1.那么奇数堆石子为必败,偶数为必胜 情形2:然后考 ...
- BZOJ 1845: [Cqoi2005] 三角形面积并 (辛普森积分)
大力辛普森积分 精度什么的搞了我好久- 学到了Simpson的一个trick 深度开11,eps开1e-4.跑的比有些扫描线还快- CODE #include <bits/stdc++.h> ...
- 部署openstack
磁盘扩容 lsblk 设置环境语言 export LANG=en_US 扩容块设备 growpart /dev/vda 1 扩容文件系统 xfs_growfs / 配置Ip 配置eth0为公共网络 ...