mysql多表连接

表a:
在这里插入图片描述
表b:
在这里插入图片描述
1、全连接
将各个表用逗号隔开,就指定了一个全连接。全连接得到的数据是两个表的行数的乘积

select * from a,b ;

在这里插入图片描述

select count(*) from a,b ;

在这里插入图片描述

select * from a,b where a.id = b.id;

指定连接条件的全连接叫等值连接,得到的数据是只满足条件的数据。
在这里插入图片描述
2、join连接
(1)内连接
内连接在不指定连接条件时,得到的数据也是两表数据行数的乘积。

select * from a INNER JOIN b;

在这里插入图片描述

select COUNT(*) from a inner join b;

在这里插入图片描述

select * from a INNER JOIN b on a.id = b.id;

指定连接条件的内连接得到的结果与指定连接条件的全连接结果相同,但内连接使用on添加连接条件,全连接使用where添加连接条件。
在这里插入图片描述
(2)左外连接

select * from a LEFT OUTER JOIN b on a.id = b.id ;

左外连接除了满足条件的匹配行外,还包括左表中不匹配的行,此时右表中选择的列设置为null,得到的数据量是左表中的行数。
在这里插入图片描述
(3)右外连接

select * from a right OUTER JOIN b on a.id = b.id ;

右外连接除了满足条件的匹配行外,还包括右表中不匹配的行,此时左表中选择的列设置为null,得到的数据量是右表中的行数。
在这里插入图片描述
(4)自然连接
自然连接还包括自然左外连接、自然右外连接。
select语句中只选取一个用来连接表的列时,自然连接可以代替内连接,同样在只选取一个列用来连接表时,可以使用自然左外连接代替左外连接,使用自然右外连接代替右外连接,区别在于自然连接会将连接表的列合并为一列,而外连接会将两表中的连接表的列仍然作为两列。

select * from a NATURAL JOIN b  ;

在这里插入图片描述
自然左外连接

select * from a NATURAL LEFT OUTER JOIN b  ;

在这里插入图片描述
自然右外连接

select * from a NATURAL right OUTER JOIN b  ;

在这里插入图片描述
3、交叉连接
交叉连接的结果和全连接记忆不加连接条件的内连接结果相同,数据量为两表行数乘积。

select * from a cross JOIN b  ;

在这里插入图片描述

select COUNT(*) from a cross join b ;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值