数据库中的表连接包括三种:内连接、外连接、交叉连接
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。