SQL Reference
SQL 速查與參考區
這一頁升級成真正可複習的 Reference:除了常用關鍵字,也整理了查詢順序、JOIN 類型、聚合函式、NULL 處理、CASE 用法與常見 SQL 模板。
查詢流程速查
SELECT指定要輸出的欄位或運算結果。
FROM指定資料來源資料表。
WHERE先篩選原始資料列。
GROUP BY依欄位分組。
HAVING再篩選分組後的結果。
ORDER BY最後排序查詢結果。
模板 1 - 標準報表查詢
SELECT Country, COUNT(*) AS CustomerCount FROM Customers WHERE Country IS NOT NULL GROUP BY Country HAVING COUNT(*) >= 2 ORDER BY CustomerCount DESC;
常用關鍵字
SELECT查詢資料。
DISTINCT去除重複值。
WHERE條件篩選。
ORDER BY排序結果。
GROUP BY分組統計。
HAVING分組後篩選。
JOIN跨表查詢。
UNION / UNION ALL合併多個查詢結果。
EXISTS檢查是否存在相關資料。
CASE條件式輸出與分類。
JOIN 類型速查
INNER JOIN
只保留兩表成功配對的資料。
LEFT JOIN
保留左表全部資料,右表沒配到則為 NULL。
RIGHT JOIN
保留右表全部資料。
FULL OUTER JOIN
保留左右兩表全部資料。
模板 2 - JOIN 報表
SELECT c.CustomerName, COUNT(o.OrderID) AS OrderCount FROM Customers c LEFT JOIN Orders o ON c.CustomerID = o.CustomerID GROUP BY c.CustomerName ORDER BY OrderCount DESC;
常用函式
COUNT()計算筆數。
AVG()計算平均值。
SUM()計算總和。
MIN()最小值。
MAX()最大值。
COALESCE()NULL 補預設值。
模板 3 - 聚合函式組合
SELECT COUNT(*) AS TotalOrders,
AVG(Freight) AS AvgFreight,
MAX(Freight) AS MaxFreight
FROM Orders;NULL 與 CASE 速查
NULL 判斷
IS NULL / IS NOT NULL,不要使用 = NULL。
CASE 分類
當你要輸出 Premium / Standard / Entry 這類標籤時很實用。
模板 4 - CASE 分群
SELECT ProductName, Price,
CASE
WHEN Price >= 100 THEN 'Premium'
WHEN Price >= 50 THEN 'Standard'
ELSE 'Entry'
END AS ProductTier
FROM Products;資料型別概念
INT / BIGINT整數型別,常用於 ID、數量。
DECIMAL(p,s)精確數值,適合金額。
VARCHAR(n)可變長度字串。
DATE / DATETIME / TIMESTAMP日期與時間資料。
BOOLEAN / BIT真假值欄位。
常見 SQL 寫法模板
模板 5 - EXISTS
SELECT CustomerName FROM Customers c WHERE EXISTS ( SELECT 1 FROM Orders o WHERE o.CustomerID = c.CustomerID );
模板 6 - 分頁查詢
SELECT OrderID, OrderDate FROM Orders ORDER BY OrderDate DESC LIMIT 10 OFFSET 20;
建議用法: 把這頁當作查詢模板庫使用,先複製最接近的範例,再替換資料表、欄位與條件,會比從零開始寫更快。