完整語法骨架
SELECT * INTO OUTFILE '/tmp/export.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
FROM users;
- 文件在服務器端創建,需
FILE 權限,目標不可存在。
DUMPFILE:單行無格式,適合導出二進制數據。
- export_options 語法同
LOAD DATA INFILE。
4. WHERE 條件構建
- 比較:
=, <=>, <>, !=, <, <=, >, >=
- 範圍:
BETWEEN ... AND ... (含邊界)
- 集合:
IN (...), NOT IN (...)
- 模式:
LIKE (% 任意字符, _ 單字符), REGEXP
- 空值:
IS NULL, IS NOT NULL
- 邏輯:
AND (優先級高), OR, NOT, XOR
- 索引失效陷阱:函數包裹列、隱式類型轉換、
!=/NOT IN/LIKE '%...' 導致全表掃描。
5. GROUP BY 與 HAVING
LIMIT 10 -- 前 10 行
LIMIT 10 OFFSET 20 -- 跳過 20 行取 10 行 (第 3 頁)
LIMIT 20, 10 -- 同義 (offset, count)
- 大偏移量性能差 (需掃描 offset+limit 行),優化參考「延遲關聯」或「游標分頁」。
8. 鎖定讀 (FOR UPDATE / FOR SHARE)
FOR UPDATE:排他鎖,阻塞其他寫/鎖定讀。
FOR SHARE (8.0+) / LOCK IN SHARE MODE:共享鎖,阻塞寫。
NOWAIT:立即返回錯誤而不等待。
SKIP LOCKED:跳過已鎖定行 (任務隊列常用)。
OF tbl_name:僅鎖定指定表行。
9. 窗口函數 (8.0+)