📅  最后修改于: 2023-12-03 15:05:18.480000             🧑  作者: Mango
SQL 内连接(Inner Join)是一种 SQL Join 操作,它将两个表中满足 Join 条件的行组合在一起。在内连接中,只有两个表中都存在的行才会被返回。左表和右表都必须存在至少一个匹配的行,否则将被忽略。在 SQL 语句中通常使用关键字 JOIN
或 INNER JOIN
来表示内连接。
在 SQL 语句中使用 JOIN
或 INNER 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
连接 table1
和 table2
表,并只返回一列,这个列只包含 column1
的值。
假设有两个表 employee
和 department
,其中 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');
要查询员工的姓名和所在部门名称,可以通过内连接 employee
和 department
表获得。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 内连接是一种很有用的操作,它可以将两个表中的数据合并在一起。在实际开发中,内连接通常用于解决多个表之间的数据查询和分析问题。