首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 學習筆記:單表資料查詢完全指南

     編輯:MySQL 綜合教學

MySQL 單表資料查詢完全指南

資料查詢是資料庫操作的核心,指從資料庫物件中取得所需的資料記錄。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。

六、 分組進階應用

  1. 基本分組: GROUP BY 欄位。分組依據欄位需有重複值,否則無實質意義。
  2. 分組明細展示: 單用 GROUP BY 只會隨機顯示每組一筆,需搭配 GROUP_CONCAT(欄位) 顯示組內所有值。
  3. 多欄位分組: GROUP BY 欄位1, 欄位2,依序遞歸分組。
  4. 分組條件過濾: 必須用 HAVING 而非 WHERE,因 WHERE 作用於原始列,HAVING 作用於分組結果。語法:GROUP BY ... HAVING 條件。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved