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:僅寫入單行,無欄位/行結束符。*:依 CREATE TABLE 順序所有欄位。column_name AS column_heading。tbl_name [AS] alias_name。後續引用(WHERE/HAVING)必須用別名,別名不可數字開頭。SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name = t2.name[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 依運算式分組,搭配聚合函數(AVG, COUNT, MAX, MIN, SUM)產生彙總欄位。ALL(Transact-SQL 擴展):包含被 WHERE 排除的組;與 HAVING 同用時失效。HAVING 為分組設條件,可含聚合函數,語法同 WHERE。1 為第一欄)。不建議用位置(可讀性差)。DESC 降序,ASC 升序(預設)。LIMIT 5 ≡ LIMIT 0,5。2 參數:第一個偏移量(0 起),第二個最大行數。疑為預留存儲程序支援,MySQL 當前版本不支援存儲程序。