数据库中的表连接包括三种:内连接、外连接、交叉连接
t1(表):
id | name |
---|---|
1 | tome |
2 | jey |
5 | mark |
6 | merry |
t2(表):
ides | namees |
---|---|
2 | qwer |
3 | asdf |
5 | zxcv |
6 | kenan |
内连接(inner join)
查询两个表中相同的记录:
select id,namees from t1 INNER JOIN t2 on t1.id = t2.ides
结果:
id | namees |
---|---|
2 | qwer |
5 | zxcv |
6 | kenam |
外连接
外连接又分左连接(左向外连接)、右连接(右向外连接)、完全外连接
左连接和左向外连接是一个东西,名字不同罢了。 右同
左连接left join(左向外连接left outer join)
左连接是将左表的数据全部查出,然后与右表进行匹配on关键字后面的内容,如果没有相关联的数据则为NULL
select id,namees from t1 LEFT OUTER JOIN t2 on t1.id = t2.ides
结果
id | namees |
---|---|
2 | qwer |
5 | zxcv |
6 | kenam |
1 | NULL |
右连接right join(右向外连接right outer join)
右连接是将右表数据全部查出,然后与左表进行匹配on关键字后面的内容,如果没有相关联的数据则为NULL
select id,namees from t1 RIGHT JOIN t2 on t1.id = t2.ides
结果
id | namees |
---|---|
2 | qwer |
NULL | asdf |
5 | zxcv |
6 | kenam |
完全外连接
select id,namees from t1 FULL JOIN t2 on t1.id = t2.ides
结果
id | namees |
---|---|
1 | NULL |
2 | qwer |
5 | zxcv |
6 | kenam |
NULL | asdf |
不过Mysql里没有完全外连接
交叉连接
交叉连接即笛卡尔积连接,是两张表的数据的集合。总数是n*n。