left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。

right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。

full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。(mysql不支持)

MySQL可通过union的方式实现全连接

 

先在数据库建表A表B,如下图所示:

 左联右联内联左联右联内联

  1. 左连接

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

执行结果如下图所示:

左联右联内联

 

说明:表a中的数据是查询出来的,表b中能匹配到的则显示,匹配不到的则不显示。以表a为主

  1. 右连接

select * from a RIGHT JOIN b on a.id=b.id

执行结果如下图所示:

左联右联内联

 

说明:表b中的数据是查询出来的,表a中能匹配到的则有,匹配不到的则没有。以表b为主

  1. 内连接

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

执行结果如下图所示:

左联右联内联

 

说明:表a和表b中的值都能匹配到才能查询的出来。取表a和表b的合集

  1. 全连接

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

#mysql的实现方式

select * from a LEFT JOIN b on a.id=b.id UNION select * from a RIGHT JOIN b on a.id=b.id 

执行结果如下:

左联右联内联

 

说明:表a中和表b中只要有数据就会在查询结果中体现出来,取表a和表b的合集

相关文章: