美文网首页
SQLSERVER JOINs:内连接、外连接、交叉连接

SQLSERVER JOINs:内连接、外连接、交叉连接

作者: 技术老小子 | 来源:发表于2024-03-21 18:20 被阅读0次

在数据库管理系统中,JOINs 是 SQL 中用于合并两个或多个表的记录的强大工具。JOINs 根据相关列之间的关系将行组合在一起。本文将详细介绍三种常见的 JOIN 类型:内连接(INNER JOIN)、外连接(OUTER JOIN,包括左外连接、右外连接和全外连接)、以及交叉连接(CROSS JOIN)。

内连接 (INNER JOIN)

内连接是最常用的 JOIN 类型,它返回两个表中匹配的行。如果在一个表中的行与另一个表中的行在指定的列上相等,则这些行将被返回。

实例数据表

假设我们有两个数据表:EmployeesDepartments

Employees 表:

EmployeeID EmployeeName DepartmentID
1 Alice 101
2 Bob 102
3 Charlie 103
4 David 101

表结构

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    EmployeeName VARCHAR(50),
    DepartmentID INT
);

测试数据

INSERT INTO Employees (EmployeeID, EmployeeName, DepartmentID) VALUES
(1, 'Alice', 101),
(2, 'Bob', 102),
(3, 'Charlie', 103),
(4, 'David', 101);

Departments 表:

DepartmentID DepartmentName
101 HR
102 IT
103 Sales
104 Marketing

表结构

CREATE TABLE Departments (
    DepartmentID INT PRIMARY KEY,
    DepartmentName VARCHAR(255)
);

测试数据

INSERT INTO Departments (DepartmentID, DepartmentName) VALUES
(101, 'HR'),
(102, 'IT'),
(103, 'Sales'),
(104, 'Marketing');

SQL 查询

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
INNER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

结果

EmployeeName DepartmentName
Alice HR
Bob IT
Charlie Sales
David HR

在这个例子中,内连接返回了所有有对应部门的员工记录。

外连接 (OUTER JOIN)

外连接包括左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。外连接不仅返回匹配的行,还返回左表、右表或两个表中未匹配的行。

左外连接 (LEFT OUTER JOIN)

左外连接返回左表的所有行,即使右表中没有匹配的行。

SQL 查询

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
LEFT OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

结果

EmployeeName DepartmentName
Alice HR
Bob IT
Charlie Sales
David HR

在这个例子中,左外连接返回了所有员工记录和他们对应的部门名称,即使有些员工没有对应的部门也会显示。

右外连接 (RIGHT OUTER JOIN)

右外连接返回右表的所有行,即使左表中没有匹配的行。

SQL 查询

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
RIGHT OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

结果

EmployeeName DepartmentName
Alice HR
Bob IT
Charlie Sales
David HR
NULL Marketing

在这个例子中,右外连接返回了所有部门记录,以及如果有的话,对应的员工名称。

全外连接 (FULL OUTER JOIN)

全外连接返回左表和右表中的所有行。如果行在另一边没有匹配,则对应列将为 NULL。

SQL 查询

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
FULL OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

结果

EmployeeName DepartmentName
Alice HR
Bob IT
Charlie Sales
David HR
NULL Marketing

在这个例子中,全外连接返回了所有员工和所有部门的记录。

交叉连接 (CROSS JOIN)

交叉连接返回第一个表中的每一行与第二个表中的每一行的笛卡尔积。这意味着如果第一个表有 M 行,第二个表有 N 行,那么结果集将有 M x N 行。

SQL 查询

SELECT Employees.EmployeeName, Departments.DepartmentName
FROM Employees
CROSS JOIN Departments;

结果

EmployeeName DepartmentName
Alice HR
Alice IT
Alice Sales
Alice Marketing
Bob HR
Bob IT
Bob Sales
Bob Marketing
Charlie HR
Charlie IT
Charlie Sales
Charlie Marketing
David HR
David IT
David Sales
David Marketing

在这个例子中,交叉连接返回了员工和部门之间所有可能的组合。

结论

JOINs 是 SQL 中的核心概念,它们使得从多个表中组合数据变得可能。根据实际需求,可以选择使用内连接、外连接或交叉连接。理解不同类型的 JOINs 如何工作,以及它们在何种情况下使用,对于任何使用 SQL 进行数据库查询的人来说都是非常重要的。

相关文章

  • 数据库连接查询

    三种连接查询 内连接 左外连接、右外连接、全外连接 交叉连接 高级引用

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • 深入理解MySQL的外连接、内连接、交叉连接

    深入理解MySQL的外连接、内连接、交叉连接

  • MySQL 多表连接查询详解

    连接:就是将多个表连城一个表输出的过程叫连接(关联)。 连接类型:交叉连接、内连接、外连接(左外连接、右外连接)、...

  • SQL常见面试题

    1、SQL的表连接方式有哪些?SQL中连接按结果集分为:内连接,外连接,交叉连接内连接:inner join on...

  • Mysql中的连接

    知识点:交叉连接内连接外连接:左外连接、右外连接 以下实验涉及到两张表,表a和表b如下 交叉连接 对两张表进行笛卡...

  • MySQL 连接查询

    MySQL的连接查询 内连接 外连接 交叉连接 内连接 内连接使用比较运算符进行表之间的某些列数据的比较操作,并列...

  • MySQL中的多表连接查询

    多表连接分为交叉连接,内连接,外连接,自连接。连接条件分为等值连接,非等值连接(区别就是连接符号是否是“=”) 学...

  • 多表查询的连接方式

    连接查询主要分为三种:内连接、外连接、交叉连接。 内连接 等值连接/相等连接使用”=”关系将表连接起来的查询,其查...

网友评论

      本文标题:SQLSERVER JOINs:内连接、外连接、交叉连接

      本文链接:https://www.haomeiwen.com/subject/vltqtjtx.html