连表查询详解

联表查询:

双表查询

将一张表和另一张表连接起来,当然想要连接起来就需要有连接点。
连接点:相同字段的相同数据

farther表
在这里插入图片描述
mom表:
在这里插入图片描述
想要将两张表连接在一起,需要inner/left/right join 作为插入的表 on 条件

inner:

两张表相同的字段中的数据列会被当作条件:

select a.name, a.age , career,gander from mom as a inner join farther as b on a.name=b.name;

在这里插入图片描述

1、给两个表分别起别名,a和b
2、a.name意为mom中的name,a.age意为mom中的age,career没有a. 是因为他是mom中所独有的字段,不需要特别区分,前面需要区分的原因是:两张表都有name和age字段,不加a. 的话分不清当前应该取哪张表的name和age字段
3、gander是需要连接的表(farther),他是farther表中的独特属性所有也不用加 ‘点’,注意:这时要加点的话就是b .
4、上面2和3总结:一样的字段需要指定字段属于哪张表,非一样的字段不需要
5、inner join 连接另一张表 : a.name=b.name;
6、 最后查询出来的结果,只有两张表中的name字段相同的数据才会显示出来,如果,mom比farther多了一条或者多条name字段的数据,如:多了两条:李梅,刷子,那这个李梅和刷子的数据就不会显示,只有当两张表同时有李梅和刷子这两条数据时,它才会显示

left:

select a.name, a.age, career ,gander from mom as a left join farther as b on a.name=b.name;

在这里插入图片描述
获取的内容大体和inner一样,但是:
当条件中的字段的数据不一样时,他有了一些新的改进,left表示左边,这时,查询的结果就会将left左边的表中的所有字段数据都扔出来(当然,首先from前面写了你要的字段,不然,他又不是你爸爸,帮你想好一切),哪怕没有满足后面的条件,即a.name=b.name

right:

select a.name, a.age, career ,gander from mom as a right join farther as b on a.name=b.name;

在这里插入图片描述
和left道理一样,当不满足后面的条件时,把右表中的数据都扔出来,当然提前得写,原因说过了

注:条件可以不用写在前面,即光有连接的条件就行
select a.age,gander,career from farther as a left join mom as b on a.name=b.name;

在这里插入图片描述

三表查询

从第二张表找到和第三张表一样的字段数据:(也就是前面说的条件)

select a.name, a.age,gander,b.career from farther as a inner join mom as b on a.name=b.name inner join work as c on b.career=c.career;

在这里插入图片描述
这时肯定会想,这样查询的话,如果第二张表和第三章没有联系,岂不是用不了了?

其实只要前面的任何一张表能够和第三张表有相同的字段数据,都可以达成相连的条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值