inner join 链表_MySQL连表操作之一对多

本文介绍了在MySQL中如何通过inner join处理一对多的关系,以及如何创建和使用外键。通过Navicat演示了外键的创建步骤,并提供了SQL命令创建表及外键的示例。此外,还讲解了left join、right join和inner join的区别,展示了不同join操作在查询数据时的效果。
摘要由CSDN通过智能技术生成

引入

当我们在数据库中创建表的时候,有可能某些列中值内容量很大,而且重复。

例子:创建一个学生表,按学校年纪班级分,表的内容大致如下:

id

name

partment

1

xxx

x学校x年级x班级

2

ooo

x学校x年级x班级

3

zzz

z学校x年级x班级

4

ddd

y学校x年级x班级

我们看出来对应的partment对应的值很长,而且重复量很大,这样就很不合适。

因此我们考虑将复杂重复的部分单独拿出来分成2个表:

第一张表:

id

caption

1

x学校x年级x班级

2

y学校x年级x班级

3

z学校x年级x班级

第二张表在之前的基础上修改的:

id

name

partment

1

xxx

1

2

ooo

2

3

zzz

3

4

ddd

1

这样看起来就很简洁了,我们将很长的且重复的部分拿出来,然后规定编号,创建学生表的时候,学生对应的partment只需要取学校对应的id便可,这样同时这2张表也就会关联起来。

说明:

1、他们的关联关系;表2中的partment和表1的id联系再一起。

2、表一的数据会对应表2中的多条数据,这就叫一对多。

问题:此时,两张表是相对独立的,都可以各自插入自己的数据,这样做很合适的,并没实质行的关联?

因此,必须要将其限制。表二的partment数据必须是表一中有的,不然,就不让其增加。

这里(partment)就引入了一个名词 —- 外键

外键

说明:

1、外键:一个表接收另一个表的主键。

2、partment外键的是表一中的nid。

3、当我们创建了外键,则系统变默认会为我们添加,相应的约束,如:表二中的partment数据必须是表一中nid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值