MySQL关于表连接的几种方式的举例说明

JOIN 可以分为以下几类:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。可以写成 JOIN

  • LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

  • RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

  • FULL JOIN (全连接):左右表不能匹配的行都会保留。

 (1)INNER JOIN

首先来看 INNER JOIN,可以理解为两个集合的交集,也就是两个表的交集,INNER JOIN 会先将两个表的数据连接在一起,然后两个表通过id互相找不到的数据将被舍弃。:

语法结构如下:

SELECT column1, column2, …
FROM table1(主表)
INNER JOIN table2(要连接的表)
    ON table1.id = table2.id
WHERE condition(s)
ORDER BY column1, … ASC/DESC
LIMIT num_limit OFFSET num_offset;

(2)LEFT  JOIN 和 RIGHT JOIN

表A 连接 表B

LEFT JOIN 保留A的所有行,不管有没有能匹配上B

反过来 RIGHT JOIN 则保留所有B里的行。

 (3)FULL JOIN

FULL JOIN 不管有没有匹配上,同时保留A和B里的所有行

 

 

举例:

student表和class表:

 

 使用INNER JOIN 查询,因为104号的赵六班级号为3,班级表中没有 id 为3的这条数据,所以这条数据查不出来:

 使用LEFT JOIN查询,优先匹配左表的记录,也就是student表:

 

 使用 RIGHT JOIN 查询,优先匹配右表的记录,也就是class表:

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小印z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值