连接查询就是根据两个表或多个表的列之间的关系,从这些表中查询数据,实现多表查询数据。
举例来说明四种连接的查询方式和结果:
例子:
-------------------------------------------------
a表 id name b表 id job parent_id
1 张三 1 23 1
2 李四 2 34 2
3 王五 3 34 4
其中: a.id=b.parent_id
--------------------------------------------------
一、内连接(inner join):
查询语句的链接条件中使用像 = 或 <> 之类的比较运算符,根据每个表共有的列的值匹配两个表中的行。
select a.*,b.* from a inner join b on a.id=b.parent_id
结果是
1 张三 1 23 1
2 李四 2 34 2
二、左连接(left join):
返回查询语句中左表的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的行返回空值。
select a.*,b.* from a left join b on a.id=b.parent_id
结果是
1 张三 1 23 1
2 李四 2 34 2
3 王五 null
总结:左连接显示左表全部行,和右表与左表相同行。
三、右连接(right join):
返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
select a.*,b.* from a right join b on a.id=b.parent_id
结果是
1 张三 1 23 1
2 李四 2 34 2
null 3 34 4
四、全连接(full join):
返回左表和右表中的所有行。当某行在另一表中没有匹配行,则另一表中的列返回空值
select a.*,b.* from a full join b on a.id=b.parent_id
结果是
1 张三 1 23 1
2 李四 2 34 2
null 3 34 4
3 王五 null