关联查询方法介绍(MySQl两表之间的)

关联查询方法介绍

在SQL中,关联查询是实现两个或多个表之间数据相互关联的一种方法。相较于普通的查询,关联查询可以更多地展示数据之间的关系,因此在很多时候都是必不可少的。

一、内连接(Inner Join)

内连接是关联查询中最常用的一种方式。内连接可以将两个表中符合条件的数据行进行匹配,然后返回这些数据行的组合结果。内连接的语法如下:

SELECT [column1], [column2], ... FROM [table1] INNER JOIN [table2] ON [table1].[column] = [table2].[column];

其中,[column1], [column2] 代表需要返回的列的名称;[table1], [table2] 代表表名;[column] 代表需要匹配的列名。比如我们有两个表Student和Score,它们的结构如下:

Table: Student

| sid | name | age | gender |

| — | —- | — | —— |

| 1 | Tom | 18 | M |

| 2 | Lucy | 19 | F |

| 3 | Bob | 20 | M |

Table: Score

| sid | math | English | science |

| — | —- | ——- | ——- |

| 1 | 80 | 90 | 85 |

| 2 | 70 | 85 | 90 |

| 3 | 60 | 70 | 80 |

我们可以通过内连接来查询每个学生的姓名和相应的数学成绩:

SELECT Student.name, Score.math
FROM Student INNER JOIN Score ON Student.sid = Score.sid;

这样我们就可以得到如下结果:

| name | math |

| —- | —- |

| Tom | 80 |

| Lucy | 70 |

| Bob | 60 |

二、左连接(Left Join)

左连接可以将第一个表的所有数据行都返回,而第二个表只返回与第一个表匹配的数据行。如果第二个表中没有与第一个表匹配的数据行,则相应的列返回 NULL。左连接的语法如下:

SELECT [column1], [column2], ... FROM [table1] LEFT JOIN [table2] ON [table1].[column] = [table2].[column];

我们可以使用左连接查询学生的姓名和相应的数学成绩,如果有学生数学成绩为空,则相应的列返回 NULL。

SELECT Student.name, Score.math
FROM Student LEFT JOIN Score ON Student.sid = Score.sid;

结果如下:

| name | math |

| —- | —- |

| Tom | 80 |

| Lucy | 70 |

| Bob | 60 |

三、右连接(Right Join)

右连接与左连接类似,只不过是将第二个表的所有数据行都返回,而第一个表只返回与第二个表匹配的数据行。如果第一个表中没有与第二个表匹配的数据行,则相应的列返回 NULL。右连接的语法如下:

SELECT [column1], [column2], ... FROM [table1] RIGHT JOIN [table2] ON [table1].[column] = [table2].[column];

我们可以使用右连接查询学生的姓名和相应的英语成绩,如果有学生英语成绩为空,则相应的列返回 NULL。

SELECT Student.name, Score.English
FROM Student RIGHT JOIN Score ON Student.sid = Score.sid;

结果如下:

| name | English |

| —- | ——- |

| Tom | 90 |

| Lucy | 85 |

| Bob | 70 |

| NULL | 90 |

四、全连接(Full Outer Join)

全连接会返回两个表中所有的数据行,如果两个表中有符合条件的数据行,则将其进行匹配返回,否则返回 NULL。全连接的语法如下:

SELECT [column1], [column2], ... FROM [table1] FULL OUTER JOIN [table2] ON [table1].[column] = [table2].[column];

我们可以使用全连接查询学生的姓名和相应的科目成绩,如果学生某一科目全为空,则相应的列返回 NULL。

SELECT Student.name, Score.math, Score.English, Score.science
FROM Student FULL OUTER JOIN Score ON Student.sid = Score.sid;

结果如下:

| name | math | English | science |

| —- | —- | ——- | ——- |

| Tom | 80 | 90 | 85 |

| Lucy | 70 | 85 | 90 |

| Bob | 60 | 70 | 80 |

| NULL | NULL | NULL | NULL |

综上所述,关联查询方法在SQL查询中是非常重要的一种方式,可以帮助我们更有效地获取数据并展示数据之间的关系。无论是内连接、左连接、右连接、还是全连接,都可以根据我们需要的数据结果进行选择。


数据运维技术 » 关联查询方法介绍(MySQl两表之间的)