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

SQL 查詢詳解:連接查詢、子查詢和聚合函數(shù)

數(shù)據(jù)庫
本文詳細介紹了 SQL 中的連接查詢、子查詢以及聚合函數(shù)的使用方法和應用場景。

作為 SQL 數(shù)據(jù)庫的核心功能,連接查詢、子查詢以及聚合函數(shù)在實際開發(fā)中有著廣泛的應用。本文將詳細介紹這些查詢方式,并通過具體的示例幫助讀者更好地理解和應用。

連接查詢

連接查詢是從多個表中選擇數(shù)據(jù)的方式,通常使用外鍵來關(guān)聯(lián)表。常見的連接方式有 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN。

1.INNER JOIN (內(nèi)連接)

INNER JOIN 返回兩個表中滿足連接條件的所有行。如果沒有匹配的行,則不會返回結(jié)果。

示例代碼:

SELECT employees.name, departments.name 
FROM employees 
INNER JOIN departments 
ON employees.department_id = departments.id;

在上述例子中,我們從employees表和departments表中選擇名稱,并使用department_id進行連接。

2.LEFT JOIN (左外連接)

LEFT JOIN 返回左表中的所有行,即使右表中沒有匹配的記錄。如果右表中沒有匹配的記錄,會以 NULL 值表示。

示例代碼:

SELECT employees.name, departments.name 
FROM employees 
LEFT JOIN departments 
ON employees.department_id = departments.id;

該查詢返回所有員工及其對應的部門,如果某個員工沒有部門,則部門名稱會顯示為 NULL。

3.RIGHT JOIN (右外連接)

RIGHT JOIN 返回右表中的所有行,即使左表中沒有匹配的記錄。如果左表中沒有匹配的記錄,會以 NULL 值表示。

示例代碼:

SELECT employees.name, departments.name 
FROM employees 
RIGHT JOIN departments 
ON employees.department_id = departments.id;

這個查詢返回所有部門及其對應的員工,如果某個部門沒有員工,則員工名稱會顯示為 NULL。

4.FULL OUTER JOIN (全外連接)

FULL OUTER JOIN 返回兩個表中的所有行,不論是否有匹配記錄。如果沒有匹配的記錄,會以 NULL 值表示。

示例代碼:

SELECT employees.name, departments.name 
FROM employees 
FULL OUTER JOIN departments 
ON employees.department_id = departments.id;

該查詢返回所有員工及所有部門,即使沒有匹配的記錄。

子查詢

子查詢是嵌套在其它查詢中的查詢,分為嵌套查詢和相關(guān)子查詢。

1.嵌套查詢

將一個查詢的結(jié)果作為另一個查詢的條件,子查詢作為外部查詢的一部分并先于外部查詢執(zhí)行。

示例代碼:

SELECT name 
FROM employees 
WHERE department_id IN (
    SELECT id 
    FROM departments 
    WHERE name = 'Sales'
);

上述查詢選擇所有在"Sales"部門工作的員工。

2.相關(guān)子查詢

子查詢中的條件引用了外層查詢的列,相關(guān)子查詢依賴于外部查詢,每次執(zhí)行外部查詢時都會執(zhí)行一次子查詢。

示例代碼:

SELECT name, salary 
FROM employees e 
WHERE salary > (
    SELECT AVG(salary) 
    FROM employees 
    WHERE department_id = e.department_id
);

這條查詢選擇所有薪資高于其部門平均薪資的員工。

3.子查詢的優(yōu)化

  • 使用適當?shù)乃饕捍_保在相關(guān)列上有適當?shù)乃饕?/li>
  • 簡化子查詢:將復雜的子查詢簡化為視圖或臨時表。
  • 避免SELECT:只選擇必須的列以減少數(shù)據(jù)傳輸量。

聚合函數(shù)

聚合函數(shù)用于對結(jié)果集中的值進行計算,如 COUNT、SUM、AVG、MAX 和 MIN。

1.COUNT

COUNT 函數(shù)返回結(jié)果集中的行數(shù)。

示例代碼:

SELECT COUNT(*) 
FROM employees;

這條查詢返回員工表中的總行數(shù)。

2.SUM

SUM 函數(shù)返回數(shù)值列的總和。

示例代碼:

SELECT SUM(salary) 
FROM employees;

這條查詢返回所有員工薪資的總和。

3.AVG

AVG 函數(shù)返回數(shù)值列的平均值。

示例代碼:

SELECT AVG(salary) 
FROM employees;

這條查詢返回所有員工薪資的平均值。

4.MAX

MAX 函數(shù)返回數(shù)值列的最大值。

示例代碼:

SELECT MAX(salary) 
FROM employees;

這條查詢返回員工中的最高薪資。

5.MIN

MIN 函數(shù)返回數(shù)值列的最小值。

示例代碼:

SELECT MIN(salary) 
FROM employees;

這條查詢返回員工中的最低薪資。

6.GROUP BY

GROUP BY 語句用于根據(jù)一個或多個列對結(jié)果集進行分組,并對每個分組應用聚合函數(shù)。

示例代碼:

SELECT department_id, COUNT(*) 
FROM employees 
GROUP BY department_id;

這條查詢返回每個部門的員工人數(shù)。

結(jié)語

本文詳細介紹了 SQL 中的連接查詢、子查詢以及聚合函數(shù)的使用方法和應用場景。通過這些知識,您可以更有效地查詢和管理數(shù)據(jù)庫數(shù)據(jù)。在實際應用中,合理使用和優(yōu)化這些查詢方法,可以大大提高數(shù)據(jù)庫操作的性能和效率。

責任編輯:趙寧寧 來源: 源話編程
相關(guān)推薦

2021-05-11 11:05:43

SAL子查詢

2010-09-26 14:04:00

SQL連接查詢

2025-01-20 15:06:42

2023-12-16 13:14:00

SQL子查詢技術(shù)

2013-03-06 09:49:16

SQL Server

2010-11-04 15:56:13

DB2內(nèi)連接查詢

2020-11-11 14:36:57

ExcelSQL函數(shù)

2011-07-18 14:38:44

子查詢外部查詢

2010-07-21 09:50:12

SQL Server子

2021-04-02 07:46:52

SQL Server數(shù)據(jù)庫知識筆記

2009-09-18 14:33:37

LINQ to SQLSQL命令

2024-12-19 07:30:34

2021-02-06 13:45:59

SQL子查詢數(shù)據(jù)庫

2011-04-28 09:49:56

SQLwith子查詢

2010-11-08 14:40:46

SQL Server連

2009-04-29 10:00:25

SQL邏輯查詢優(yōu)化

2009-03-17 13:25:13

查詢遷移SQL Server

2010-09-10 08:54:02

2010-09-26 15:29:13

sql查詢分頁

2010-06-30 15:24:49

SQL Server子
點贊
收藏

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