20 数据查询之使用JOIN

在数据库操作中,JOIN是一种重要的查询方式,用来从多个表中联合获取数据。在前一章节中,我们学习了如何使用WHERE条件来筛选查询结果,而这一章我们将深入探讨JOIN的使用,以便从关联表中提取出我们所需的信息。

6.3.1 JOIN的类型

PostgreSQL支持多种JOIN类型,主要包括:

  1. INNER JOIN:返回两个表中匹配的记录。
  2. LEFT JOIN(或称为LEFT OUTER JOIN):返回左表中的所有记录及右表中匹配的记录,若右表没有匹配,则结果为NULL。
  3. RIGHT JOIN(或称为RIGHT OUTER JOIN):返回右表中的所有记录及左表中匹配的记录,若左表没有匹配,则结果为NULL。
  4. FULL JOIN(或称为FULL OUTER JOIN):返回两个表中的所有记录,若没有匹配,则结果为NULL。
  5. CROSS JOIN:返回左表和右表中的笛卡尔积。

以下,我们将通过具体案例来展示如何使用这些JOIN操作。

6.3.2 案例背景

假设我们有两个表:

  • employees(员工表):
employee_id name department_id
1 Alice 1
2 Bob 2
3 Charlie 1
4 Daniel NULL
  • departments(部门表):
department_id department_name
1 HR
2 Sales
3 Marketing

INNER JOIN 示例

我们想查询所有在员工表中有的员工及其对应的部门名称。可以使用INNER JOIN进行查询:

1
2
3
SELECT e.name, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;

结果

name department_name
Alice HR
Bob Sales
Charlie HR

LEFT JOIN 示例

如果我们想要列出所有员工及其部门,即使某些员工没有部门信息,我们可以使用LEFT JOIN

1
2
3
SELECT e.name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id;

结果

name department_name
Alice HR
Bob Sales
Charlie HR
Daniel NULL

RIGHT JOIN 示例

如果我们想列出所有部门及其员工信息(即便在某些部门没有员工),可以使用RIGHT JOIN

1
2
3
SELECT e.name, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id;

结果

name department_name
Alice HR
Bob Sales
NULL Marketing

FULL JOIN 示例

如果我们想列出所有员工和所有部门的信息(即便在某些情况下没有匹配),可以使用FULL JOIN

1
2
3
SELECT e.name, d.department_name
FROM employees e
FULL JOIN departments d ON e.department_id = d.department_id;

结果

name department_name
Alice HR
Bob Sales
Charlie HR
Daniel NULL
NULL Marketing

CROSS JOIN 示例

最后,假设我们想获得所有员工与所有部门的组合,可以使用CROSS JOIN

1
2
3
SELECT e.name, d.department_name
FROM employees e
CROSS JOIN departments d;

结果

name department_name
Alice HR
Alice Sales
Alice Marketing
Bob HR
Bob Sales
Bob Marketing
Charlie HR
Charlie Sales
Charlie Marketing
Daniel HR
Daniel Sales
Daniel Marketing

6.3.3 小结

在本节中,我们详细讲解了JOIN的类型以及如何在PostgreSQL中使用它们来从多个表中获取联合数据。通过这些案例,你可以更好地理解如何在实际应用中利用JOIN进行查询。

接下来,我们将在下一章节中深入探讨聚合函数,进一步丰富我们的数据查询技巧。

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

学习下节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论