内连接
- join、cross join、inner join 这三个是等价的,都是内连接,其结果都是笛卡尔积
- 如果三个子句家伙是哪个on,则为等值连接:只会返回on子句相等的结果
外连接
外连接分为left join,right join 和natural join
- T1 left join T2 on T1.id=T2.id:左外连接,返回所有列、T1中所有行、T2中条件符合的行
- T1 right join T2 on T1.id=T2.id:右外连接,返回所有列、T2所有行、T1中符合条件的行
- T1 natural join T2:自然连接,返回T1所有行、T2中与T1匹配的行,相同的属性被合并
对于自然连接要多做说明,现有表join_test1 、join_test2:
mysql> select * from join_test1;
id | name |
---|---|
1 | A |
2 | B |
3 | C |
3 rows in set (0.00 sec)
mysql> select * from join_test2;
id | sex |
---|---|
1 | 男 |
2 | 女 |
4 | 男 |
3 rows in set (0.00 sec) 自然连接的结果:
mysql> select * from join_test1 NATURAL join join_test2;
id | name | sex |
---|---|---|
1 | A | 男 |
2 | B | 女 |