🗒️SQL-多表查询
2024-11-26
| 2024-11-26
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password

1. 内连接(INNER JOIN)

功能:

INNER JOIN 是最常用的连接方式,它只返回两个表中满足连接条件的匹配记录(交集部分)。

语法:

示例:

假设有两张表:
表1:employees
emp_id
name
dept_id
1
Alice
101
2
Bob
102
3
Charlie
103
表2:departments
dept_id
dept_name
101
HR
102
IT
104
Finance
查询员工及其所在部门的名称:
结果
name
dept_name
Alice
HR
Bob
IT

2. 左连接(LEFT JOIN 或 LEFT OUTER JOIN)

功能:

LEFT JOIN 会返回左表中的所有记录,即使右表中没有匹配的记录。对于没有匹配的记录,右表的字段会显示为 NULL

语法:

示例:

查询所有员工及其部门名称(即使某些员工没有被分配到部门):
结果
name
dept_name
Alice
HR
Bob
IT
Charlie
NULL

3. 右连接(RIGHT JOIN 或 RIGHT OUTER JOIN)

功能:

RIGHT JOINLEFT JOIN 相反,它会返回右表中的所有记录,即使左表中没有匹配的记录。

语法:

示例:

查询所有部门及其员工(即使某些部门没有员工):
结果
name
dept_name
Alice
HR
Bob
IT
NULL
Finance

4. 全连接(FULL OUTER JOIN)

功能:

FULL OUTER JOIN 会返回两个表中的所有记录,无论是否有匹配。对于没有匹配的记录,未匹配表的字段会显示为 NULL

语法:

示例:

返回所有员工和所有部门的信息,无论是否有匹配:
结果
name
dept_name
Alice
HR
Bob
IT
Charlie
NULL
NULL
Finance

5. 交叉连接(CROSS JOIN)

功能:

CROSS JOIN 会返回两个表的笛卡尔积,即两个表中每一行的所有组合。通常用于生成所有可能的组合。

语法:

示例:

查询所有员工与所有部门的组合:
结果
name
dept_name
Alice
HR
Alice
IT
Alice
Finance
Bob
HR
Bob
IT
Bob
Finance
Charlie
HR
Charlie
IT
Charlie
Finance

6. 自连接(SELF JOIN)

功能:

自连接是指一张表与自身进行连接,通常用于对表中具有层级关系的数据进行查询。

语法:

示例:

假设有一个员工表,记录了每个员工的直属上级:
表:employees
emp_id
name
manager_id
1
Alice
NULL
2
Bob
1
3
Charlie
1
4
David
2
查询每个员工及其直属上级的姓名:
结果
employee_name
manager_name
Alice
NULL
Bob
Alice
Charlie
Alice
David
Bob

7. 子查询(Subquery)

功能:

子查询是将一个查询的结果作为另一个查询的条件或数据来源。可以用于过滤、聚合或复杂查询。

语法:

示例:

查询属于部门名称为 "IT" 的所有员工:

8. 联合查询(UNION 和 UNION ALL)

功能:

UNIONUNION ALL 用于合并多个查询的结果集。
  • UNION 会去掉重复的记录。
  • UNION ALL 不会去掉重复记录。

语法:

示例:

查询两个不同表中的所有员工:

9. 使用多表的复杂查询

通常可以综合使用多种连接和子查询来完成复杂查询。例如:
查询部门中有多少员工,并显示部门名称,即使部门没有员工:

总结

  • INNER JOIN:匹配两表中满足条件的记录(交集)。
  • LEFT JOIN:返回左表所有记录,没有匹配的用 NULL 填充。
  • RIGHT JOIN:返回右表所有记录,没有匹配的用 NULL 填充。
  • FULL OUTER JOIN:返回两表的并集,匹配不到的部分填 NULL
  • CROSS JOIN:笛卡尔积,返回所有组合。
  • SELF JOIN:表自身连接,用于层级结构。
  • 子查询:嵌套查询,用于复杂过滤。
  • UNION/UNION ALL:合并两个查询结果。
 
 
相关文章 :
  • SQL
  • SQL-SELECTDon’t forget “help”
    Loading...
    目录