淮安汽車集團(tuán)網(wǎng)站建設(shè)長(zhǎng)沙網(wǎng)站seo
SQL 查詢?cè)敿?xì)指南
SQL(Structured Query Language)是一種用于管理和操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。本文將詳細(xì)介紹 SQL 中的一些常見操作及其用法,包括 DISTINCT 去重、LIMIT 限制、排序、開窗函數(shù)、NULL 值替換、JOIN 與 UNION 等。
1. DISTINCT 去重
當(dāng)從數(shù)據(jù)庫中查詢數(shù)據(jù)時(shí),可能會(huì)遇到重復(fù)的行。DISTINCT
關(guān)鍵字用于去除結(jié)果中的重復(fù)行。
SELECT DISTINCT column1, column2 FROM table_name;
2. LIMIT 限制返回行數(shù)
LIMIT
子句用于限制返回的行數(shù)。例如,返回前 5 行:
SELECT column1, column2 FROM table_name LIMIT 5;
3. 排序與開窗函數(shù)
- ORDER BY:用于對(duì)結(jié)果集進(jìn)行排序??梢园瓷?#xff08;
ASC
)或降序(DESC
)排列。
SELECT column1, column2 FROM table_name ORDER BY column1 ASC;
- 開窗函數(shù):提供對(duì)行集的分析能力。
ROW_NUMBER()
是常用的開窗函數(shù)。
SELECT column1, column2, ROW_NUMBER() OVER (PARTITION BY column1 ORDER BY column2 DESC) AS row_num
FROM table_name;
4. NULL 值處理
使用 COALESCE
或 NVL
函數(shù)(在 Oracle 中)處理 NULL
值:
SELECT COALESCE(column1, 'default_value') FROM table_name;
在 Oracle 中可以使用:
SELECT NVL(column1, 'default_value') FROM table_name;
5. SQL 執(zhí)行順序
SQL 查詢的執(zhí)行順序通常如下:
- FROM:確定數(shù)據(jù)來源。
- WHERE:過濾行。
- GROUP BY:對(duì)結(jié)果進(jìn)行分組。
- HAVING:對(duì)分組結(jié)果進(jìn)行過濾。
- SELECT:選擇返回的列。
- ORDER BY:對(duì)結(jié)果進(jìn)行排序。
6. 聯(lián)接 (JOIN) 與 UNION
在 SQL 中,JOIN
和 UNION
用于不同的目的:
-
JOIN:從多個(gè)表中獲取相關(guān)數(shù)據(jù),通過匹配條件合并表,將結(jié)果集左右疊加。
- INNER JOIN:返回兩個(gè)表中匹配的行。
- LEFT JOIN:返回左表中的所有行,即使右表中沒有匹配的行。
- RIGHT JOIN:返回右表中的所有行,即使左表中沒有匹配的行。
- FULL JOIN:返回兩個(gè)表中的所有行,MySQL 不直接支持 FULL JOIN,通??梢酝ㄟ^ UNION 實(shí)現(xiàn)。
示例:
SELECT a.column1, b.column2 FROM table1 a LEFT JOIN table2 b ON a.common_field = b.common_field;
-
UNION:合并多個(gè)查詢的結(jié)果,將結(jié)果集垂直疊加。
- UNION:去除重復(fù)行。
- UNION ALL:包括所有行,包含重復(fù)行。
示例:
SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2;
注意
在銀行,金融數(shù)據(jù)處理中,LEFT JOIN
經(jīng)常使用,以確保主要表(左表)的所有行都被保留,即使右表中沒有匹配的記錄。這樣可避免數(shù)據(jù)丟失。