10分钟掌握SQL连接:inner、outer、left、right

介绍SQL中使用的四种主要类型的连接:内连接、外连接、左连接和右连接。

微信搜索关注《Java学研大本营》

1 简介

结构化查询语言(SQL)是一种强大的编程语言,用于管理和操作数据库。用户可以进行检索、存储、编辑和分析存储在关系数据库中的数据。使用SQL的关键操作之一是“连接”,SQL中的连接功能能够基于相关的列将两个或多个表的数据进行合并。

图片

本文将解释SQL中使用的四种主要类型的连接:内连接、外连接、左连接和右连接。

2 什么是SQL中的连接

在数据库的上下文中,连接操作是根据两个或多个表之间的相关列,将它们的行组合起来。我们可以将连接看作是一种将多个表中的数据整合起来的方法,创建一个可以像单个实体一样查询的视图。

下面是使用到的两个表的例子:

-- Table: Customers
CREATE TABLE Customers (
    ID INT,
    NAME VARCHAR(100)
);

INSERT INTO Customers (ID, NAME) VALUES
(1, 'Bob'),
(2, 'Alice'),
(3, 'Mary'),
(4, 'John');

-- Table: Orders
CREATE TABLE Orders (
    ORDER_ID INT,
    CUSTOMER_ID INT,
    PRODUCT VARCHAR(100)
);

INSERT INTO Orders (ORDER_ID, CUSTOMER_ID, PRODUCT) VALUES
(1001, 1, 'Laptop'),
(1002, 2, 'Phone'),
(1003, 4, 'TV'),
(1004, 3, 'Keyboard');

3 内连接

内连接是SQL中最常用的连接类型。它返回两个表中具有匹配值的记录。如果某条记录在任何一个表中没有匹配项,则不包含在结果中。

我们根据Customers.IDOrders.CUSTOMER_ID来连接这两个表:

SELECT Customers.NAME, Orders.PRODUCT
FROM Customers
INNER JOIN Orders
ON Customers.ID = Orders.CUSTOMER_ID;

4 左连接(左外连接)

左连接或左外连接,返回左表中的所有记录,以及右表中的匹配记录。如果没有匹配项,则右侧的结果为NULL。

假设我们还有一个没有下任何订单的客户:

-- Adding a new customer
INSERT INTO Customers (ID, NAME) VALUES
(5, 'Emma');

如果现在执行一个左连接:

SELECT Customers.NAME, Orders.PRODUCT
FROM Customers
LEFT JOIN Orders
ON Customers.ID = Orders.CUSTOMER_ID;

5 右连接(右外连接)

右连接或右外连接,返回右表中的所有记录,以及左表中的匹配记录。如果没有匹配项,则左侧的结果为NULL。

假设我们的数据库中有一个来自不在Customers表中列出的客户的订单:

-- Adding a new order
INSERT INTO Orders (ORDER_ID, CUSTOMER_ID, PRODUCT) VALUES
(1005, 6, 'Mouse');

如果现在执行一个右连接:

SELECT Customers.NAME, Orders.PRODUCT
FROM Customers
RIGHT JOIN Orders
ON Customers.ID = Orders.CUSTOMER_ID;

6 全外连接

全外连接在左表或右表记录中有匹配项时,返回所有记录。它是左连接和右连接的组合。如果没有匹配项,则任何一侧的结果都为NULL。

使用修改过的Customers和Orders表来执行一个全外连接:

SELECT Customers.NAME, Orders.PRODUCT
FROM Customers
FULL OUTER JOIN Orders
ON Customers.ID = Orders.CUSTOMER_ID;

请注意,并非所有的数据库系统都支持全外连接。如果你的数据库系统不支持它,你可以通过组合左连接和右连接来实现相同的结果。

7 总结

SQL连接(Joins)是一个强大的功能,允许我们根据相关列从两个或多个表中组合数据,它们是SQL和数据库管理的重要组成部分。

掌握如何使用每种连接类型:内连接(Inner Join)、左连接(Left Join)、右连接(Right Join)和全外连接(Full Outer Join),对于优化您的SQL查询和从数据库中检索正确的数据非常有帮助。

推荐书单

《SQL语言从入门到精通(软件开发视频大讲堂)》

《SQL语言从入门到精通》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了在开发中使用SQL语言必须掌握的技术。全书分为3篇共18章,内容包括SQL语言基础、SQL查询基础、复杂查询、数据排序、SQL函数的使用、分组统计、子查询、多表查询、添加数据、修改和删除数据、视图、存储过程、触发器、游标、索引、事务、管理数据库与数据表、数据库安全。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的注释,读者可以轻松领会SQL语言的精髓,快速提高开发技能。

《SQL语言从入门到精通(软件开发视频大讲堂)》icon-default.png?t=N7T8https://item.jd.com/14055972.html

图片

精彩回顾

用好这10个Spring Cloud功能,使用Java轻松开发微服务

9个必须掌握的Spring Boot功能(下)

9个必须掌握的Spring Boot功能(上)

10个Java项目中必备的Maven插件

手把手教你将Java代码转换为Kotlin

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值