資料查詢是資料庫操作的核心,指從資料庫物件中取得所需的資料記錄。MySQL 提供了豐富多樣的查詢方式,從簡單的欄位選取到複雜的條件篩選、排序分頁、統計分組,本文將系統整理單表查詢的各項關鍵技術。
最基本的查詢語法為 SELECT 欄位1, 欄位2... FROM 表名。掌握以下四種常見變體即可應對大多數基礎場景:
SELECT * FROM 表名;SELECT 欄位1, 欄位2 FROM 表名;DISTINCT 關鍵字,如 SELECT DISTINCT 欄位 FROM 表名; 可過濾重複值。+ - * / %),並可用 CONCAT() 組合字串,例如 SELECT CONCAT('每公斤', 產品, '的價格', 價格*2) FROM 產品表;。透過 WHERE 子句實現精準篩選,核心運算符包含:
>, <, =, >=, <=, != (或 <>)AND (或 &&), OR (或 ||), NOT (或 !), XOR進階條件語法:
BETWEEN 值1 AND 值2 (含邊界),NOT BETWEEN 為排除範圍。IS NULL / IS NOT NULL,不可用 = NULL。IN (值1, 值2...) 及 NOT IN。注意:NOT IN 子查詢若包含 NULL 會導致結果為空。LIKE 搭配通配符 % (任意長度) 和 _ (單字元)。MySQL 預設不區分大小寫。使用 ORDER BY 子句,支援單欄位或多欄位混合排序:
ASC 升序 (預設),NULL 值優先顯示。DESC 降序。ORDER BY 價格 ASC, ID DESC。LIMIT 子句是實現分頁的關鍵:
LIMIT 5 等同 LIMIT 0, 5 (從第 1 筆取 5 筆)。LIMIT 4, 5 從第 5 筆開始取 5 筆 (位移 4)。ORDER BY 先排序再分頁。常用聚合函數:COUNT(), AVG(), SUM(), MAX(), MIN()。重點差異在於 NULL 處理:
COUNT(*) 統計所有列 (含 NULL)。COUNT(欄位) 忽略 NULL。AVG/SUM/MAX/MIN 皆忽略 NULL;若表無資料,COUNT 回傳 0,其餘回傳 NULL。GROUP BY 欄位。分組依據欄位需有重複值,否則無實質意義。GROUP BY 只會隨機顯示每組一筆,需搭配 GROUP_CONCAT(欄位) 顯示組內所有值。GROUP BY 欄位1, 欄位2,依序遞歸分組。HAVING 而非 WHERE,因 WHERE 作用於原始列,HAVING 作用於分組結果。語法:GROUP BY ... HAVING 條件。