left join(左连接) 返回包括左表中的所有记录和右表中连接字段相等的记录
Table A
id name
01 abc
02 ab
Table B
id cnt
01 3
03 4
Select A.id,A.name,B.cnt from A left join B on A.id=B.id
结果
id name cnt
01 abc 3
02 ab null
特别地,也有记录条数大于左边表的时候,例如:
Table A
id name
01 abc
02 ab
Table B
id cnt
01 3
01 5
03 4
Select A.id,A.name,B.cnt from A left join B on A.id=B.id
结果
id name cnt
01 abc 3
01 abc 5
02 ab null
结果是3条记录,比左连接左边的表table A的记录条数2还要多。
连接字段即两表的id字段
right join(右连接) 返回包括右表中的所有记录和左表中连接字段相等的记录
Table B
id cnt
01 3
03 4
Table A
id name
01 abc
02 ab
Select A.id,A.name,B.cnt from B right join A on A.id=B.id
结果
id name cnt
01 abc 3
02 ab null
左连接和右连接很相似,只是左右表位置的不同罢了。适用场景,如:员工表中有个字段是详细地址信息表的主键id,这两个表相关联时,就可以用左连接或右连接,因为在详细地址信息表中找不到某员工的地址信息也要将员工这条记录显示出来,相应的详细地址信息字段为空即可,而不能因为地址没有存在数据库里,这个员工就没了(简单理解成不重要的信息不影响整条记录的显示)
inner join(等值连接、内连接) 只返回两个表中连接字段相等的行
Table A
id name
01 abc
02 ab
Table B
id cnt
01 3
03 4
结果
id name cnt
总结:可以将可使用左连接和右连接的两个表理解成其中一个表的信息明显比另外一个表的信息重要得多;使用内连接的两个表理解成重要程度区别不太大的两个表。
注意:看“重要”与否的标准是针对查询结果的显示而言的。