内连接,左连接,右连接,全连接
表T1: 表T2:
id name passwd id jifen dengji
1 jack jpw 1 20 3
2 tom tpw 3 50 4
1,内连接
如果想把用户信息、积分、等级都列出来,那么一般会这样写:
普通:select * from T1, T2 where T1.id = T2.id
内连:select * from T1 inner join T2 on T1.id = T2.id
后者的效率比前面的效率高多了,建议使用内连
2,左连接
显示左表T1中的所有行,并把右表T2中符合条件加到左表T1中;
右表T2中不符合条件,就不用加入结果表中,并且NULL表示。
SQL语句:select * from T1 left join T2 on T1.id = T2.id
运行结果 :
T1.id name passwd T2.id jifen dengji
1 jack jpw 1 20 3
2 tom tpw NULL NULL NULL
3,右连接
显示右表T2中的所有行,并把左表T1中符合条件加到右表T2中;
左表T1中不符合条件,就不用加入结果表中,并且NULL表示。
SQL语句:select * from T1 right join T2 on T1.id = T2.id
运行结果:
T1.id name passwd T2.id jifen dengji
1 jack jpw 1 20 3
NULL NULL NULL 3 50 4
4,全连接
显示左表T1、右表T2两边中的所有行,即把左联结果表 + 右联结果表组合在一起,然后过滤掉重复的。SQL语句:
select * from T1 full join T2 on T1.id = T2.id
运行结果
T1.id name passwd T2.id jifen dengji
1 jack jpw 1 20 3
2 tom tpw NULL NULL NULL
NULL NULL NULL 3 50 4