内连接与外连接区别

本文探讨了数据库连接中的内连接和外连接概念。内连接只包含符合连接条件的行,而外连接(包括左外连接、右外连接和全外连接)则保留所有表的数据行,即使某些条件不匹配。左外连接保持左表的所有行,右外连接保持右表的所有行,全外连接结合两者。通过示例,进一步解释了不同连接类型的区别。

内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。

右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。

全外连接:左外连接 +右外连接。

我们把tableA看作左表,把tableB看成右表,下面来用图表示一下

                      INNER JOIN                                                                      LEFT OUTER JOIN

                               

                     RIGHT OUTER JOIN                                                            FULL OUTER JOIN

                                    

 

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;

                                                        内连接

    

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
OUTER JOIN classes c
ON s.class_id=c.id

 

                                                          外连接

和INNER JOIN(内连接)相比,RIGHT OUTER JOIN(外连接)多了一行,多出来的一行是“四班”,但是,学生相关的列如namegenderscore都为NULL。因为根据ON条件s.class_id = c.idclasses表的id=4的行正是“四班”,但是,students表中并不存在class_id=4的行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值