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;
建議用法: 把這頁當作查詢模板庫使用,先複製最接近的範例,再替換資料表、欄位與條件,會比從零開始寫更快。