首页 > 其他分享 >左连接 右连接 内连接 外连接 一张图搞懂

左连接 右连接 内连接 外连接 一张图搞懂

时间:2024-09-03 19:03:09浏览次数:9  
标签:一张 FULL JOIN Customers 连接 CustomerID OUTER 搞懂 Orders

sql中左连接,右连接,内连接,全连接之间的区别?

定义

1. INNER JOIN

INNER JOIN 返回两个表中具有匹配值的行。如果某行在其中一个表中没有匹配,则该行不会出现在结果集中。

2. LEFT JOIN (LEFT OUTER JOIN)

LEFT JOIN 返回左表的所有行,即使右表中没有匹配的行。如果没有匹配,则结果中的右表列包含 NULL。

3. RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOIN 返回右表的所有行,即使左表中没有匹配的行。如果没有匹配,则结果中的左表列包含 NULL。

4. FULL JOIN (FULL OUTER JOIN)

FULL JOIN 返回左表和右表中所有匹配和不匹配的行。对于左表和右表中不匹配的部分,分别填充 NULL。

注意

在某些数据库系统中,如 MySQL,FULL JOIN 不是默认支持的,你可能需要用 UNION 或者 LEFT JOINRIGHT JOIN 来模拟 FULL JOIN 的行为。

实操

首先,我们需要创建两个表:CustomersOrders

创建表

CREATE TABLE Customers (
    CustomerID INT PRIMARY KEY,
    Name VARCHAR(50)
);

CREATE TABLE Orders (
    OrderNumber INT PRIMARY KEY,
    CustomerID INT
);

插入数据

接下来,我们向这两个表中插入一些示例数据:

INSERT INTO Customers (CustomerID, Name)
VALUES (1, 'Alice'),
       (2, 'Bob'),
       (3, 'Charlie');

INSERT INTO Orders (OrderNumber, CustomerID)
VALUES (101, 1),
       (102, 2),
       (103, NULL);  -- 添加一个没有客户 ID 的订单

各种 JOIN 的 SQL 语句

INNER JOIN

SELECT Customers.Name, Orders.OrderNumber
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

LEFT JOIN (LEFT OUTER JOIN)

SELECT Customers.Name, Orders.OrderNumber
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

RIGHT JOIN (RIGHT OUTER JOIN)

SELECT Customers.Name, Orders.OrderNumber
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

FULL JOIN (FULL OUTER JOIN)

在 SQL Server 中,你可以使用 FULL OUTER JOIN 直接写出:

SELECT Customers.Name, Orders.OrderNumber
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

image

标签:一张,FULL,JOIN,Customers,连接,CustomerID,OUTER,搞懂,Orders
From: https://www.cnblogs.com/zhuoss/p/18392408

相关文章

  • Linux手动连接配置wifi
    Linux手动连接配置wifi背景以前在桌面端或是嵌入式手动连接过wifi,但没有深入也没有详细研究,今天系统地记录下。wpa_supplicant连接WIFIwpa_supplicant介绍及背景官网:https://w1.fi/wpa_supplicant/.以下来自man手册,介绍了它的作用、产生背景及由来,保持原汁原味。wpa_supplicant......
  • 搞懂Transformer结构,看这篇PyTorch实现就够了
    前言下面分享一篇实验室翻译的来自哈佛大学一篇关于Transformer的详细博文。“AttentionisAllYouNeed”[1]一文中提出的Transformer网络结构最近引起了很多人的关注。Transformer不仅能够明显地提升翻译质量,还为许多NLP任务提供了新的结构。虽然原文写得很清楚,但实际上大家普......
  • PostgreSQL 软肋 “最大连接数” 到底是不是问题?
    PostgreSQL为什么接受大量连接到数据库需要连接池  (这是一篇2020年8月4日我写的文章,分析为什么,根本上也没有如某些disspostgresql连接数不能太高问题非常严重的人所说的影响严重,实际上针对PostgreSQL连接的问题,还真有一个可以说一下的,但鲜有人提到)正文———————————......
  • Java数据库连接池的优化与配置
    Java数据库连接池的优化与配置大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!数据库连接池是现代Java应用中不可或缺的一部分,它允许多个用户共享一个固定数量的数据库连接,显著提高了应用程序的性能和可扩展性。本文将探讨如何优化和配置Java数据库连......
  • Haskell爬虫:连接管理与HTTP请求性能
    爬虫技术作为数据抓取的重要手段,其效率和性能直接影响到数据获取的质量与速度。Haskell,作为一种纯函数式编程语言,以其强大的类型系统和并发处理能力,在构建高效爬虫方面展现出独特的优势。本文将探讨在Haskell中如何通过连接管理和HTTP请求优化来提升爬虫的性能。连接管理......
  • Java服务端数据库连接:连接池的资源优化
    Java服务端数据库连接:连接池的资源优化大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java服务端开发中,数据库连接池是提高数据库操作效率的关键技术之一。然而,随着系统负载的增加,如何优化连接池的资源使用成为了一个重要的问题。本文将探讨如何通......
  • Java服务端数据库连接:连接池的故障恢复策略
    Java服务端数据库连接:连接池的故障恢复策略大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java服务端应用中,数据库连接池是核心组件之一,它管理着数据库连接的生命周期。然而,数据库连接可能会因为多种原因(如网络问题、数据库服务重启等)而出现故障。......
  • c# sqlsrever 数据库连接
    引用usingSystem.Data.SqlClient;//创建连接字符串stringconnectionString=$"Server={ip},{port};Database={database};UserId={username};Password={password};";try{using(SqlConnectionconnection=newSqlConnection(connectionString)){......
  • Nginx:长短连接
    g学习自:通过nginx理解什么是长连接和短连接-寻梦99-博客园 0、前言C/S通信连接分为短连接、长连接。HTTP请求、响应通常采用短连接。TCP通信可以根据需要选择短连接、长连接。长连接C端和S端建立持久连接,用于传输多个请求、响应。在一次连接中,可以进行多次通信而无......
  • IP地址提示不是私密连接如何解决
    IP地址提示“不是私密链接”或“连接不是私密的”通常是由以下几个原因导致的:一、SSL/TLS证书问题证书过期:网站的SSL证书如果超过了有效期,浏览器会认为它不再可信,从而显示连接不安全的警告。证书不受信任:证书可能由不受浏览器信任的颁发机构(CA)签署,或者根本就没有被任何受信......