为什么要有连接
在实际使用创建表的时候我们不可能将所有的信息都放在一个表中,也就是不同的信息会放在不同的表中,所以我们最终需要的信息
可能在多个表中,这就需要我们使用连接来查询我们想要的信息。
有几种连接
一般情况下我们主要使用下面三种连接:
- INNER JOIN(等值连接):获取两个表中字段匹配关系的记录。
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
使用连接的一般思路
- 首先要分析我们需要的数据存在哪些表中;
- 找到这些表中关联的数据列,没有关联的数据列的话一般不能进行连接查询;
- 确定使用哪种连接方式;
- 编写查询语句测试;
假设我们有下面的两个表:
student表:
id | name |
1 | h |
2 | j |
3 | k |
4 | l |
5 | m |
6 | n |
7 | o |
grade表: | |
id | grade |
---- | ---- |
1 | 88 |
2 | 90 |
3 | 87 |
4 | 85 |
下面来看三种查询的结果:
- INNER JOIN
select a.id,a.name,b.grade
from student as a
inner join grade as b
on a.id=b.id;
结果为:
id | name | grade |
1 | h | 88 |
2 | j | 90 |
3 | k | 87 |
4 | l | 85 |
- LEFT JOIN
select a.id,a.name,b.grade
from student as a
left join grade as b
on a.id=b.id;
结果为:
id | name | grade |
1 | h | 88 |
2 | j | 90 |
3 | k | 87 |
4 | l | 85 |
5 | m | NULL |
6 | n | NULL |
7 | o | NULL |
- RIGHT JOIN
select a.id,a.name,b.grade
from student as a
right join grade as b
on a.id=b.id
结果为:
id | name | grade |
1 | h | 88 |
2 | j | 90 |
3 | k | 87 |
4 | l | 85 |
其中的左右表是根据放在join的左右来定义的。