为什么要有连接

在实际使用创建表的时候我们不可能将所有的信息都放在一个表中,也就是不同的信息会放在不同的表中,所以我们最终需要的信息

可能在多个表中,这就需要我们使用连接来查询我们想要的信息。

有几种连接

一般情况下我们主要使用下面三种连接:

  1. INNER JOIN(等值连接):获取两个表中字段匹配关系的记录。
  2. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  3. RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

使用连接的一般思路

  1. 首先要分析我们需要的数据存在哪些表中;
  2. 找到这些表中关联的数据列,没有关联的数据列的话一般不能进行连接查询;
  3. 确定使用哪种连接方式;
  4. 编写查询语句测试;

假设我们有下面的两个表:
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

下面来看三种查询的结果:

  1. 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

  1. 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

  1. 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的左右来定义的。