最近找工作复习mysql,涉及到sql的几种join
A表
id | name |
---|---|
1 | zhang |
2 | li |
3 | wang |
4 | zhao |
id | name |
---|---|
2 | zhao |
4 | qian |
5 | wu |
7 | zhang |
1.inner join:
是一种内连接,也是一种普通的连接,只是将A和B中所指定属性中的相同的元素选择出来(其中又分为等值连接和不等值连接,如下例就是等值连接)
select * from A inner join B on A.name = B.name
A.id | A.name | B,id | B, name |
1 | zhang | 7 | zhang |
4 | zhao | 2 | zhao |
自然连接不需要选择属性,他要求两个关系中进行比较的分量必须是相同属性组,并且在结果中把重复的属性列去掉(而等值连接就不需要去掉重复的额属性列)
select * from A natrual join B
A.id | name | B.id |
---|---|---|
1 | zhang | 7 |
4 | zhao | 2 |
3.left outer join , right outer join, full outer join
三种中结果会出现null,也都需要指定属性
4.cross join就是普通的笛卡尔积
3和4可以参考Difference between Inner Join & Full join
Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别