首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SELECT 語法完整指南:從基礎到進階用法詳解

     編輯:MySQL 資料庫相關知識

SELECT 完整語法骨架

SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
       [DISTINCT | DISTINCTROW | ALL]
       select_list
       [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
       [FROM table_references
         [WHERE where_definition]
         [GROUP BY col_name,...] [HAVING where_definition]
         [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC],...]
         [LIMIT [offset,] rows] [PROCEDURE procedure_name]]

核心子句詳細說明

選項修飾詞

  • STRAIGHT_JOIN:強制按 FROM 子句順序聯結,優化器順序不佳時加速。
  • SQL_SMALL_RESULT / SQL_BIG_RESULT:搭配 GROUP BY/DISTINCT 使用。前者告知結果集小,用臨時表;後者告知結果集大,用排序。
  • HIGH_PRIORITY:賦予 SELECT 高於 UPDATE 的優先級,快速查詢。
  • 實務上絕大多數情況不需要這四個關鍵字。

去重選項

  • DISTINCT/DISTINCTROW:結果集去除重複行。NULL 視為相等,多個 NULL 僅保留一個。
  • ALL:預設行為,無實際作用。

匯出檔案

  • INTO OUTFILE:結果寫入伺服器端檔案,檔案不得預存。export_options 語法同 LOAD DATA INFILE 的 FIELDS/LINES 子句。
  • INTO DUMPFILE:僅寫入單行,無欄位/行結束符。

Select List 可包含項目

  1. *:依 CREATE TABLE 順序所有欄位。
  2. 自訂順序的欄位清單。
  3. 別名:column_name AS column_heading。
  4. 運算式:欄位、常數、函數、算術/位運算組合。
  5. 內建/聚合函數。
  6. 以上任意組合。

FROM 子句與表別名

  • 指定參與查詢的表,多表以逗號分隔,順序不影響結果。
  • 表別名:tbl_name [AS] alias_name。後續引用(WHERE/HAVING)必須用別名,別名不可數字開頭。
    例:SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name = t2.name

WHERE 搜尋條件

  • 基本語法:[NOT] expr comp_op expr、[NOT] expr [NOT] LIKE 'pattern'、[NOT] expr IS [NOT] NULL、[NOT] expr [NOT] BETWEEN expr AND expr、[NOT] col_name join_op col_name、[NOT] boolean_expr。
  • AND 優先級高於 OR,可用括號改變順序。
  • BETWEEN 含首尾值;第一個值大於第二個則無結果。
  • 字串比較:< 靠近字母表頭,> 靠近尾。通常小寫 > 大寫 > 數字,依 OS 排序規則。尾部空格忽略('Dirk' = 'Dirk ')。
  • 日期比較:< 早於,> 晚於。字串與日期比較需加引號。
  • LIKE 適用 CHAR/VARCHAR/DATETIME(不含秒/毫秒),MySQL 也支援數值運算式。查詢 DATETIME 建議用 LIKE '%9:20%' 避免完整時間元件干擾。
  • 通配符:%(任意長度)、_(單字符)。

GROUP BY 與 HAVING

  • GROUP BY 依運算式分組,搭配聚合函數(AVG, COUNT, MAX, MIN, SUM)產生彙總欄位。
  • ALL(Transact-SQL 擴展):包含被 WHERE 排除的組;與 HAVING 同用時失效。
  • HAVING 為分組設條件,可含聚合函數,語法同 WHERE。

ORDER BY

  • 可用欄位名、別名、位置(1 為第一欄)。不建議用位置(可讀性差)。
  • DESC 降序,ASC 升序(預設)。

LIMIT

  • 限制回傳行數。1 參數:LIMIT 5 ≡ LIMIT 0,5。2 參數:第一個偏移量(0 起),第二個最大行數。

PROCEDURE

疑為預留存儲程序支援,MySQL 當前版本不支援存儲程序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved