用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
样表:
_______________________
table1 | table2
-----------------------------------------
id name pwd | id game power
1 wr 123 | 1 ball 100
2 lxk 521 | 2 dream 99
3 kg 21 | 5 baskt 100
4 mws 30 | 6 box 50
-----------------------------------------
1.1内连接(inner join)
如果表中有至少一个匹配,则返回行。即,只返回符合条件的项
风格1:FROM TABLE1, TABLE2 WHERE TABLE1.ID=TABLE2.ID
风格2:FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.ID=TABLE2.ID
结果:
_______________________
table1 | table2
-----------------------------------------
id name pwd id game power
1 wr 123 1 ball 100
2 lxk 521 2 dream 99
-----------------------------------------
1.2外连接(outer join)
包括左向外联接、右向外联接或完整外部联接。
1.2.1左外连接(left join)
从左表那里返回所有的行,若在右表中没有匹配的行,右表不匹配的行会置为NULL。
结果集中记录个数等于左表的记录数。
风格:FROM TABLE1 INNER LEFT JOIN TABLE2 ON TABLE1.ID=TABLE2.ID
结果:
__________________________
table1 | table2
-----------------------------------------------
id name pwd id game power
1 wr 123 1 ball 100
2 lxk 521 2 dream 99
3 kg 21 NULL NULL NULL
4 mws 30 NULL NULL NULL
-----------------------------------------------
1.2.2右外连接(right join)
与左外连接正好相反。
从右表那里返回所有的行,若在左表中没有匹配的行,左表不匹配的行会置为NULL。
风格:FROM TABLE1 INNER LEFT JOIN TABLE2 ON TABLE1.ID=TABLE2.ID
1.2.3全链接(full join)
返回左表和右表的所有行。左表不匹配右表的行置为NULL,右表不匹配左表的行也置为NULL。
结果集中的记录数等于左右表的并集记录数。
风格:FROM TABLE1 INNER FULL JOIN TABLE2 ON TABLE1.ID=TABLE2.ID
结果:
_____________________________________
table1 |
table2
-------------------------------------------------------------------
id name pwd id game power
1 wr 123 1
ball 100
2 lxk 521 2
dream 99
3 kg 21 NULL NULL NULL
4 mws 30 NULL NULL NULL
NULL NULL NULL 5
baskt 100
NULL NULL NULL 6
box 50
----------------------------------------------------------------