中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL的內連接和外連接怎么用

發布時間:2022-03-01 10:04:06 來源:億速云 閱讀:181 作者:iii 欄目:開發技術

這篇文章主要介紹“SQL的內連接和外連接怎么用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“SQL的內連接和外連接怎么用”文章能幫助大家解決問題。

SQL 中的 JOIN 是什么?

JOIN 運算符允許您以各種方式組合相關信息,正如我在上面簡要解釋的那樣。連接有多種類型,分為兩大類 - 內部連接和外部連接。

INNER JOIN 和 OUTER JOIN 之間的最大區別在于,內連接將僅保留來自彼此相關的兩個表(在結果表中)的信息。另一方面,外部聯接還將保留與結果表中的另一個表無關的信息。

讓我們詳細了解 INNER JOIN 和 OUTER JOIN 如何工作以更好地理解它們。

如何在 SQL 中使用 INNER JOIN

內部聯接將僅保留來自兩個相關聯的表的信息。如果您將這兩個表想象為維恩圖,則由 INNER JOIN 生成的表將是下面它們重疊的綠色突出顯示部分:

SQL的內連接和外連接怎么用

內連接的維恩圖表示

這是內部聯接的語法:

SELECT * FROM table1
    JOIN table2
    ON relation;

內連接語法

我們將在下面通過一個例子來了解它是如何工作的。

如何在 SQL 中使用 OUTER JOIN

如果要保留所有數據,而不僅僅是相互關聯的數據,則可以使用 OUTER 聯接。

有三種類型的外部聯接:LEFT JOIN,RIGHT JOIN,和FULL JOIN。它們之間的差異涉及它們保留哪些不相關的數據——它可以來自第一個表、第二個表或兩者。沒有要填充的數據的單元格的值為NULL。

注意:LEFT JOIN是所有版本的 SQL 中最普遍實現的。但是對于RIGHT JOIN和FULL JOIN就不是這樣了,在早期的各種SQL版本中都沒有實現(但oracle數據庫在數據表連接方面實現得比較充分)。

讓我們看看每個人是如何單獨工作的。然后我們將通過下面的示例了解它們是如何工作的。

SQL中的左外連接

LEFT OUTER JOIN,或簡稱Left Join,將保留左(第一個)表中的不相關數據。

您可以用帶有兩個圓圈的維恩圖來想象它,結果表是綠色突出顯示的部分,其中包括公共/重疊部分和左側圓圈的其余部分。

SQL的內連接和外連接怎么用

左外連接的維恩圖表示

語法如下所示。您會看到它類似于 Inner Join 語法,但添加了LEFT關鍵字。

SELECT columns
  FROM table1
  LEFT JOIN table2
  ON relation;

左外連接

SQL 中的右外部聯接

RIGHT OUTER JOIN,或簡稱為Right Join,將保留與第一個表無關的第二個表中的數據。

您可以用帶有兩個圓圈的維恩圖來想象它,結果表是綠色突出顯示的部分,其中包括重疊部分和右側圓圈的其余部分。

SQL的內連接和外連接怎么用

右外連接的維恩圖表示

語法如下,唯一的區別是RIGHT關鍵字。

SELECT columns
  FROM table1
  RIGHT JOIN table2
  ON relation;

右外連接

SQL 中的完全外部聯接

您可以將 FULL OUTER JOIN 視為左連接和右連接的組合。它將保留兩個表中的所有行,缺失的數據將用NULL.

您可以用帶有兩個圓圈的維恩圖來想象它,結果表是綠色突出顯示的部分,其中包括所有內容:重疊部分、左圓和右圓。

SQL的內連接和外連接怎么用

完全外連接的維恩圖表示

語法如下,使用FULL關鍵字。

SELECT columns
  FROM table1
  FULL JOIN table2
  ON relation;

全外連接

SQL JOIN 運算符示例

獸醫診所可能的數據庫可以有一張用于寵物的表和一張用于主人的表。由于一個所有者可能有多個寵物,因此 pets 表將有一owner_id列指向所有者表。

身份證姓名年齡所有者_ID
1菲多71
2小姐31
3娘娘腔102
413
5料斗20
身份證姓名電話號碼
1約翰尼4567823
2奧利7486513
3伊萊尼亞3481365
4路易絲1685364

您可以使用簡單的查詢來獲取一個帶有彼此相鄰的寵物名稱和所有者名稱的表。讓我們用所有不同的 JOIN 運算符來做。

SQL 內部聯接示例

讓我們首先使用JOIN.

在這種情況下,你會SELECT選擇在pets表中的列name(并將其重命名pet_name)。然后從owners表中選擇列name,并將其重命名為owner.。這將是這樣的:SELECT pets.name AS pet_name, owners.name AS owner

接著,可以使用FROM關鍵字聲明列來自pets表,并使用JOIN關鍵字聲明想與owners表進行連接:FROM pets JOIN owner

最后,當需要加入的兩列一一對應時,使用ON關鍵字將pets表的owner_id與owners表的id使用等號連接起來: pets.owner_id = owners.id

這是全部:

SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  JOIN owners
  ON pets.owner_id = owners.id;

您將得到如下表格,其中僅包括與主人有關的寵物和與寵物有關的主人。

寵物名稱所有者
菲多約翰尼
小姐約翰尼
娘娘腔奧利
伊萊尼亞

SQL LEFT JOIN 示例

讓我們執行相同的查詢,LEFT JOIN以便您可以看到不同之處。除了添加LEFT關鍵字之外,查詢是相同的。

SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  LEFT JOIN owners
  ON pets.owner_id = owners.id;

在這種情況下,左表中的行pets, 全部保留,當owners表中缺少數據時,用 填充NULL。

寵物名稱所有者
菲多約翰尼
小姐約翰尼
娘娘腔奧利
伊萊尼亞
料斗

似乎有一只寵物沒有在主人那里注冊。

SQL 右連接示例

如果您使用 using 執行相同的查詢RIGHT JOIN,則會得到不同的結果。

SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  RIGHT JOIN owners
  ON pets.owner_id = owners.id;

在這種情況下,右表中的所有行owners, 都被保留,如果有缺失值,則用 填充NULL。

寵物名稱所有者
菲多約翰尼
小姐約翰尼
娘娘腔奧利
伊萊尼亞
路易絲

似乎有一個沒有注冊寵物的主人。

SQL 全連接示例

您可以再次執行相同的查詢,使用FULL JOIN.

SELECT pets.name AS pet_name, owners.name AS owner
  FROM pets
  FULL JOIN owners
  ON pets.owner_id = owners.id;

結果表再次不同——在這種情況下,兩個表中的所有行都被保留。

寵物名稱所有者
菲多約翰尼
小姐約翰尼
娘娘腔奧利
伊萊尼亞
料斗
路易絲

在我們的數據庫中似乎有沒有主人的寵物和沒有寵物的主人。

關于“SQL的內連接和外連接怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

新河县| 土默特左旗| 项城市| 静安区| 岗巴县| 老河口市| 鄢陵县| 上饶县| 集贤县| 区。| 佛山市| 阳原县| 英山县| 清流县| 高平市| 重庆市| 仙桃市| 同仁县| 南京市| 信宜市| 泸水县| 达尔| 闸北区| 磐安县| 涪陵区| 康马县| 霍州市| 额敏县| 唐海县| 麦盖提县| 天全县| 万州区| 明光市| 辽宁省| 沙湾县| 大方县| 茌平县| 原平市| 施秉县| 大石桥市| 丹寨县|