自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

十分鐘掌握SQL連接:inner、outer、left、right

數(shù)據(jù)庫(kù) SQL Server
結(jié)構(gòu)化查詢語(yǔ)言是一種強(qiáng)大的編程語(yǔ)言,用于管理和操作數(shù)據(jù)庫(kù)。本文將解釋SQL中使用的四種主要類型的連接:內(nèi)連接、外連接、左連接和右連接。

簡(jiǎn)介

結(jié)構(gòu)化查詢語(yǔ)言(SQL)是一種強(qiáng)大的編程語(yǔ)言,用于管理和操作數(shù)據(jù)庫(kù)。用戶可以進(jìn)行檢索、存儲(chǔ)、編輯和分析存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)。使用SQL的關(guān)鍵操作之一是“連接”,SQL中的連接功能能夠基于相關(guān)的列將兩個(gè)或多個(gè)表的數(shù)據(jù)進(jìn)行合并。

本文將解釋SQL中使用的四種主要類型的連接:內(nèi)連接、外連接、左連接和右連接。

什么是SQL中的連接

在數(shù)據(jù)庫(kù)的上下文中,連接操作是根據(jù)兩個(gè)或多個(gè)表之間的相關(guān)列,將它們的行組合起來(lái)。我們可以將連接看作是一種將多個(gè)表中的數(shù)據(jù)整合起來(lái)的方法,創(chuàng)建一個(gè)可以像單個(gè)實(shí)體一樣查詢的視圖。

下面是使用到的兩個(gè)表的例子:

-- 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');

內(nèi)連接

內(nèi)連接是SQL中最常用的連接類型。它返回兩個(gè)表中具有匹配值的記錄。如果某條記錄在任何一個(gè)表中沒(méi)有匹配項(xiàng),則不包含在結(jié)果中。

我們根據(jù)Customers.ID和Orders.CUSTOMER_ID來(lái)連接這兩個(gè)表:

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

左連接(左外連接)

左連接或左外連接,返回左表中的所有記錄,以及右表中的匹配記錄。如果沒(méi)有匹配項(xiàng),則右側(cè)的結(jié)果為NULL。

假設(shè)我們還有一個(gè)沒(méi)有下任何訂單的客戶:

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

如果現(xiàn)在執(zhí)行一個(gè)左連接:

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

右連接(右外連接)

右連接或右外連接,返回右表中的所有記錄,以及左表中的匹配記錄。如果沒(méi)有匹配項(xiàng),則左側(cè)的結(jié)果為NULL。

假設(shè)我們的數(shù)據(jù)庫(kù)中有一個(gè)來(lái)自不在Customers表中列出的客戶的訂單:

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

如果現(xiàn)在執(zhí)行一個(gè)右連接:

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

全外連接

全外連接在左表或右表記錄中有匹配項(xiàng)時(shí),返回所有記錄。它是左連接和右連接的組合。如果沒(méi)有匹配項(xiàng),則任何一側(cè)的結(jié)果都為NULL。

使用修改過(guò)的Customers和Orders表來(lái)執(zhí)行一個(gè)全外連接:

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

請(qǐng)注意,并非所有的數(shù)據(jù)庫(kù)系統(tǒng)都支持全外連接。如果你的數(shù)據(jù)庫(kù)系統(tǒng)不支持它,你可以通過(guò)組合左連接和右連接來(lái)實(shí)現(xiàn)相同的結(jié)果。

總結(jié)

SQL連接(Joins)是一個(gè)強(qiáng)大的功能,允許我們根據(jù)相關(guān)列從兩個(gè)或多個(gè)表中組合數(shù)據(jù),它們是SQL和數(shù)據(jù)庫(kù)管理的重要組成部分。

掌握如何使用每種連接類型:內(nèi)連接(Inner Join)、左連接(Left Join)、右連接(Right Join)和全外連接(Full Outer Join),對(duì)于優(yōu)化您的SQL查詢和從數(shù)據(jù)庫(kù)中檢索正確的數(shù)據(jù)非常有幫助。

責(zé)任編輯:趙寧寧 來(lái)源: Java學(xué)研大本營(yíng)
相關(guān)推薦

2020-12-17 06:48:21

SQLkafkaMySQL

2022-08-26 09:01:07

CSSFlex 布局

2024-05-13 09:28:43

Flink SQL大數(shù)據(jù)

2024-08-30 10:51:51

2024-10-25 15:56:20

2019-04-01 14:59:56

負(fù)載均衡服務(wù)器網(wǎng)絡(luò)

2023-09-26 22:12:13

數(shù)據(jù)倉(cāng)庫(kù)Doris

2021-09-07 09:40:20

Spark大數(shù)據(jù)引擎

2022-06-16 07:31:41

Web組件封裝HTML 標(biāo)簽

2024-06-19 09:58:29

2023-04-12 11:18:51

甘特圖前端

2012-07-10 01:22:32

PythonPython教程

2015-09-06 09:22:24

框架搭建快速高效app

2023-11-30 10:21:48

虛擬列表虛擬列表工具庫(kù)

2023-10-07 13:13:24

機(jī)器學(xué)習(xí)模型數(shù)據(jù)

2022-04-08 07:51:31

JavaJVM垃圾回收

2023-07-15 18:26:51

LinuxABI

2009-10-09 14:45:29

VB程序

2019-09-16 09:14:51

2024-11-07 16:09:53

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)