📜  SQL 内连接(1)

📅  最后修改于: 2023-12-03 15:05:18.480000             🧑  作者: Mango

SQL 内连接

简介

SQL 内连接(Inner Join)是一种 SQL Join 操作,它将两个表中满足 Join 条件的行组合在一起。在内连接中,只有两个表中都存在的行才会被返回。左表和右表都必须存在至少一个匹配的行,否则将被忽略。在 SQL 语句中通常使用关键字 JOININNER JOIN 来表示内连接。

使用方法

在 SQL 语句中使用 JOININNER JOIN 关键字,指定要连接的两个表和它们之间的条件:

SELECT *
FROM table1
JOIN table2 ON table1.column1 = table2.column2;

上面的 SQL 语句将返回两个表中所有满足条件 table1.column1 = table2.column2 的行。SELECT 关键字可以指定要返回的列,也可以使用通配符 * 返回所有列。

在内连接中,还可以使用 USING 关键字代替 ON 条件。 USING 语法使用相同名称的列来连接两个表,只返回列的一个版本。例如:

SELECT *
FROM table1
JOIN table2 USING (column1);

上面的 SQL 语句使用 column1 连接 table1table2 表,并只返回一列,这个列只包含 column1 的值。

示例

假设有两个表 employeedepartment,其中 employee 表包含员工编号、姓名和部门编号,department 表包含部门编号和部门名称。

CREATE TABLE employee (
  id INT NOT NULL PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  dept_id INT NOT NULL
);

CREATE TABLE department (
  id INT NOT NULL PRIMARY KEY,
  name VARCHAR(50) NOT NULL
);

INSERT INTO employee (id, name, dept_id)
VALUES (1, 'John', 1),
       (2, 'Amy', 2),
       (3, 'David', 2),
       (4, 'Jane', 1),
       (5, 'Mark', 3);

INSERT INTO department (id, name)
VALUES (1, 'Sales'),
       (2, 'Marketing'),
       (3, 'IT');

要查询员工的姓名和所在部门名称,可以通过内连接 employeedepartment 表获得。SQL 语句如下:

SELECT employee.name, department.name
FROM employee
JOIN department ON employee.dept_id = department.id;

查询结果如下:

name  |  name
------+---------
John  | Sales
Amy   | Marketing
David | Marketing
Jane  | Sales
Mark  | IT
总结

SQL 内连接是一种很有用的操作,它可以将两个表中的数据合并在一起。在实际开发中,内连接通常用于解决多个表之间的数据查询和分析问题。