首頁 > 資料庫 > mysql教程 > 如何使用 SQL 查詢從多個表中檢索資料?

如何使用 SQL 查詢從多個表中檢索資料?

Patricia Arquette
發布: 2025-01-24 01:42:41
原創
601 人瀏覽過

How Can I Retrieve Data from Multiple Tables Using SQL Queries?

SQL多表格資料查詢指南

簡介

本指南介紹SQL中從資料庫多個資料表檢索資料的各種方法,支援複雜的資料分析和報告產生。

連接與聯合

連接用於基於公共列組合多個表的行,建立一個單一的結果集。主要有三種連接類型:

  • 內連接 (Inner Join): 只傳回兩個表中都符合的行。
  • 左外連接 (Left Outer Join): 傳回左側表的所有行以及右側表中僅匹配的行。
  • 右外連接 (Right Outer Join): 返回右側表的所有行以及左側表中僅匹配的行。

聯合 (Unions) 將多個查詢的結果組合成單一的結果集。它們類似於連接,但不使用公共列進行匹配。聯合可以用來合併不同結構的表中的資料或刪除重複行。

子查詢

子查詢是在查詢中的查詢,用於過濾或修改從主查詢檢索的資料。它們用括號括起來,可用於WHERE、HAVING或FROM子句。

笛卡爾積連結(惡夢的開始!)

當連接表時未指定連接條件時,就會發生笛卡爾積連接。這會導致大量不必要的行,從而成為效能殺手。務必始終指定連線條件以避免笛卡爾積連線。

FROM子句中的子查詢

FROM子句中的子查詢允許您將子查詢的結果集用作主查詢中的表。這對於複雜的資料轉換或簡化巢狀查詢非常有用。

進階技巧集錦

計算列: 使用數學運算或函數在查詢中建立新列。 CASE語句: 使用邏輯表達式根據指定條件選擇不同的值。 OVER()函數: 將聚合函數應用於分區內的行組。 臨時表: 建立臨時表以儲存中間結果,允許進行複雜的資料轉換而無需修改原始表。 派生表: 與臨時表類似,但它們是在查詢中內聯建立的。

連結與聯合的實務應用

範例1: 擷取豐田和寶馬製造的汽車的名稱和型號。

<code class="language-sql">SELECT
    cars.model,
    brands.brand
FROM
    cars
JOIN
    brands
    ON cars.brand = brands.id
WHERE
    brands.brand IN ('Toyota', 'BMW');</code>
登入後複製

範例2: 檢索是跑車或四輪傳動車的汽車的名稱和顏色。

<code class="language-sql">SELECT
    cars.model,
    colors.color
FROM
    cars
JOIN
    models
    ON cars.model = models.id
JOIN
    colors
    ON cars.color = colors.id
WHERE
    models.model IN ('Sports', '4WD');</code>
登入後複製

範例3: 使用左外連接檢索所有品牌,即使庫存中沒有汽車。

<code class="language-sql">SELECT
    brands.brand
FROM
    brands
LEFT JOIN
    cars
    ON brands.id = cars.brand;</code>
登入後複製

結論

透過掌握連接、聯合和其他高級SQL技術,您可以有效地從多個表中檢索資料並產生複雜的報告。這對資料分析師、資料科學家和資料庫管理員來說是一項至關重要的技能。

以上是如何使用 SQL 查詢從多個表中檢索資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板