SQL JOIN2025年1月10日 | 阅读 9 分钟 顾名思义,JOIN 就是组合一些东西。在 SQL 中,JOIN 意味着“组合两个或多个表”。 什么是 Join?JOIN 是一种从两个或多个表中提取信息的方法。在 SQL 中,JOIN 子句用于组合数据库中两个或多个表的记录。它是 SQL 最重要的功能之一,允许从两个或多个共享一组公共值的相关表中检索行。连接两个表后获得的行是基于一个条件:第一个表中的列(定义为主键)必须匹配第二个表中被该外键引用的主键列。 SQL JOIN 的类型
示例表EMPLOYEE
PROJECT
1. INNER JOIN这种类型的连接称为 EQUI join,因为它包含一个等号运算符 JOIN 条件。它是 join 的一种类型,其中 join 条件包含等号运算符。在 SQL 中,INNER JOIN 选择两个表中具有匹配值的记录,只要条件满足。它返回两个表中满足条件的行的组合。 以下语法用于创建 INNER JOIN。 语法 在上面的语法中,table1.column1 表示要检索数据的表和列。条件 table1.matching_column = table2.matching_column 是连接 table1 和 table2 的连接条件。如果所有表中的列名都不同,则不必在列名前加上表名。当同一个列名出现在多个表中时,有必要在列名前加上表名。除了连接条件之外,join 查询的 WHERE 子句还可以包含引用单个表列的其他条件。此条件可以进一步限制 join 查询的行。 示例 1 要检索每个员工的员工姓名和项目部门。我们将不得不基于公共列 Emp_ID 连接 EMPLOYEE 和 PROJECT 表。 查询 说明 在上面的示例中,要执行 join,SQL 会从 Project 和 Department 这两个表中提取行的组合,并检查连接条件 PROJECT.EMP_ID = EMPLOYEE.EMP_ID 是否为真。如果连接条件为真,SQL 将在此结果集中显示此行的组合,否则将拒绝。如果 PROJECT 表中有一个员工没有匹配的 EMP_ID,那么该员工的记录将不会显示在查询结果中。在连接条件中,PROJECT.EMP_ID 作为外键,EMPLOYEE.EMP_ID 作为主键。 以下是查询的输出 输出
您还可以使用 AND、OR、NOT 运算符添加其他搜索条件。 示例 2 要检索员工姓名和部门是“Development”的员工的项目部门,请使用以下查询。 查询 以下是查询的输出 输出
说明 在上面的查询中,结果的计算方式如下:
2. Natural JOIN如果执行 join 操作,对 join 中列的每次引用都必须明确,这意味着如果该列存在于 join 中引用的多个表中。,则必须在列名前加上表名。在 join 的结果中,公共列只出现一次。它有助于基于具有匹配数据类型和名称的列来连接两个或多个表。 以下语法用于创建 NATURAL JOIN。 示例 1 3. LEFT JOINSQL LEFT JOIN 返回左表的所有值以及右表中匹配的值。如果没有匹配的 join 值,则返回 NULL。 以下语法用于创建 LEFT JOIN。 查询 说明 执行后显示输出。检索员工的 EMP_Name、DEPARTMENT 信息,即使某个部门信息不包含员工。对于 EMPLOYEE 表中的所有没有在 PROJECT 表中找到匹配行的行,SQL 将为包含 PROJECT 表列的任何 select 表达式返回 NULL。 以下是查询的输出 输出
4. RIGHT JOIN在 SQL 中,RIGHT JOIN 返回右表中所有行以及左表中匹配的值。如果两个表中都没有匹配项,则返回 NULL。 以下语法用于创建 RIGHT JOIN。 查询 说明 在上面的示例中,检索员工的 EMP_Name、DEPARTMENT 信息,即使某个部门信息不包含员工。对于 PROJECT 表中所有没有在 EMPLOYEE 表中找到匹配行的行,SQL 将为包含 EMPLOYEE 表列的任何 select 表达式返回 NULL。 以下是查询的输出 输出
说明 在上面的示例中,要执行 join,SQL 会从 Project 和 Department 这两个表中提取行的组合,并检查连接条件 PROJECT.EMP_ID = EMPLOYEE.EMP_ID 是否为真。如果连接条件为真,SQL 将在此结果集中显示此行的组合,否则将拒绝。此过程从两个表的每一行组合重复执行。 5. FULL JOIN在 SQL 中,FULL JOIN 是 left 和 right outer join 的组合结果。Join 表包含两个表的所有记录。它在找不到匹配项的地方放置 NULL。FULL JOIN 只是 EQUI JOIN 结果的扩展。在使用 EQUI JOIN 时,如果一个表中存在与第二个表中不匹配的记录,则这些行将不会被选中。我们可以使用 FULL JOIN 强制选择这些行。 以下语法用于创建 FULL JOIN。 查询 说明 在上面的示例中,要执行 join,SQL 会从 Project 和 Department 这两个表中提取行的组合,并检查连接条件 PROJECT.EMP_ID = EMPLOYEE.EMP_ID 是否为真。如果连接条件为真,SQL 将在此结果集中显示此行的组合,否则将拒绝。此过程从两个表的每一行组合重复执行。 以下是查询的输出 输出
6. SELF JOIN在 SQL 中,另一种 join 的形式是 SELF JOIN,它是表与其自身的 join。对于 SELF JOIN,我们需要打开同一表的两个副本。由于表名相同,为了避免混淆,我们在 join 条件中使用别名来限定列名。 以下语法用于创建 SELF JOIN。 示例 要检索有关员工及其经理的信息,您需要使用 SQL 中的 self join 概念将表与其自身连接。您需要通过在 From 子句中使用两个不同的别名指定 Emp 表及其列(Emp_name, manager_name)两次来完成此操作,从而将 EMP 表视为两个独立的表。让我们执行以下查询。 步骤 1: 首先,我们需要使用以下查询创建“EMP”表。 步骤 2: 现在我们将使用 INSERT INTO 语句向“EMP”表添加数据 以下是查询的输出 输出
7. Cartesian JOIN如果 join 查询中省略了 join 条件,则结果是笛卡尔积。它也称为 Cross Join,它将连接的表的笛卡尔积返回。在这种情况下,一个表的每一行都与另一个表的每一行连接。 以下语法用于创建 Cartesian JOIN。 示例 1 说明 执行上述查询后,如果 EMPLOYEE 表包含 m 行,PRODUCT 表包含 n 行,它将检索 m * n 行。因此,执行后,将检索 24 行,因为 EMPLOYEE 表包含 6 行,PRODUCT 表包含 4 行。 以下是查询的输出 输出
SQL JOIN 多项选择题1. 在 SQL 中,以下哪个 join 指的是合并右表中没有左表匹配键的记录?
答案:b 解释: RIGHT OUTER JOIN 指的是合并右表中具有. 2. 以下哪个 join 在 SQL 中包含等号运算符?
答案:c 解释: 它是 join 的一种类型,其中 join 条件包含等号运算符。 3. 在 SQL 中,以下哪个关键字与 INNER JOIN 一起使用?
答案:a 解释: ON 关键字用于 INNER JOIN。 4. 以下哪个是 RIGHT JOIN 的语法?
答案:c 解释: 以下语法用于在 SQL 中创建 RIGHT JOIN。 下一个主题DBMS SQL 集合运算 |
我们请求您订阅我们的新闻通讯以获取最新更新。