mysql支持外连接吗_mysql 外连接与内连接作用

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

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

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

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

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

首先创建两个表分别为e1和department

e1如下                                                                                                  department如下

1d32baeb3b19794455b64e01fb27c39c.png                                                           

0bebda31a68b3e66cf8f0d88d8dc7fc8.png

首先进行内连接查询 select * from e1,department where department=dep_id;结果如下

679d1423592cefcfbc93549824f22dfe.png

我们发现只有在e1表中的department与department表中dep_Id相同的列会被显示,其它的不会显示出来

然后使用左外连接进行查询 select * from e1 left join department on department=dep_id;结果如下

ee4a7504a5f8e9efb2a2683a677f8b2b.png

我们发现,除了e1表中department和department表中dep_id相同的列被显示出来,e1表中其它的列也显示出来,但是dep_id和dep_name为NULL

因为左外连接的作用是把连接的左表,即left左边的表,也就是e1中的所有列显示出来,满足条件的正常显示,不满足的用NULL代替。

如果再加上附加条件,比如:select * from e1 left join department on department=dep_id where department=111;结果如下

6dc16b6ca4984c08d416d610ea6759c5.png

它将只会显示department为111的列,因为要先满足where条件,再进行外连接条件判断。还有:select * from e1 left join department on department=dep_id where department=777;

b86473853b9071658447e77636cf7c95.png

我们发现还是只显示department为777的一列,尽管右表属性都为NULL

同理,我们看一下右外连接:select * from e1 right join department on department=dep_id;

deede4abdade69589b44a1cb503005a9.png

我们发现,首先将department=dep_id的列显示出来,然后显示了右表的其它内容,与右表不匹配的用NULL代替。

也就是说,使用右外连接,会先将右表所有内容显示出来,与条件匹配的左表内容也显示出来,不匹配的用NULL代替,和左外连接一样,如果又

使用了where,那么先使用where判断,如果只有一列数据,那么只显示一列。

因为mysql不支持全外连接,所以就不进行演示了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值