left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。
right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。
inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。
full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。(mysql不支持)
MySQL可通过union的方式实现全连接
先在数据库建表A表B,如下图所示:
- 左连接
select * from a LEFT JOIN b on a.id=b.id
执行结果如下图所示:
说明:表a中的数据是查询出来的,表b中能匹配到的则显示,匹配不到的则不显示。以表a为主
- 右连接
select * from a RIGHT JOIN b on a.id=b.id
执行结果如下图所示:
说明:表b中的数据是查询出来的,表a中能匹配到的则有,匹配不到的则没有。以表b为主
- 内连接
select * from a INNER JOIN b on a.id=b.id
执行结果如下图所示:
说明:表a和表b中的值都能匹配到才能查询的出来。取表a和表b的合集
- 全连接
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的合集