MySQL 包含多項非標準擴充,使用時需注意可移植性。可透過 /*! ... */ 註釋語法讓其他資料庫忽略:
SELECT /*! STRAIGHT_JOIN */ col FROM t1, t2 WHERE ...
CREATE /*!32302 TEMPORARY */ TABLE t (a INT);
MEDIUMINT, SET, ENUM、多種 BLOB/TEXT。AUTO_INCREMENT, BINARY, UNSIGNED, ZEROFILL。BINARY 強制區分。db_name.tbl_name 跨庫存取,不支援表空間語法。| 功能 | 說明 |
|---|---|
LIKE 用於數值欄位 | 標準 SQL 僅限字串 |
INTO OUTFILE / STRAIGHT_JOIN | 匯出檔案 / 指定聯結順序 |
SQL_SMALL_RESULT | 提示優化器結果集較小 |
EXPLAIN SELECT | 顯示執行計畫 |
CREATE TABLE ... INDEX/KEY | 建表時直接定義索引與前綴索引 |
TEMPORARY / IF NOT EXISTS | 臨時表與避免重複建立 |
COUNT(DISTINCT col1, col2) | 多欄位去重計數 |
ALTER TABLE ... CHANGE/DROP INDEX | 彈性修改欄位與索引 |
DROP TABLE IF EXISTS / 多表刪除 | 安全刪除 |
DELETE ... LIMIT | 限制刪除筆數 |
INSERT/REPLACE ... DELAYED | 延遲寫入 |
LOW_PRIORITY | 降低更新優先權 |
LOAD DATA INFILE | 高速匯入 (相容 Oracle 語法) |
OPTIMIZE TABLE / SHOW | 維護與資訊查詢 |
字串雙引號 / \ 跳脫 | 標準僅單引號 |
SET OPTION | 會話變數設定 |
GROUP BY 可省略選取欄位 | 效能優化 |
| 函數別名支援 (ANSI/ODBC) | 如 CONCAT 等 |
||、&& 為邏輯 OR/AND (C 風格),字串串接請用 CONCAT()。% 等同 MOD()。SELECT 選取清單:SELECT col1=1 FROM t;。LAST_INSERT_ID(), REGEXP, BIT_COUNT(), IF(), PASSWORD(), MD5(), ENCODE/DECODE, PERIOD_ADD/DIFF, TO_DAYS, WEEKDAY, TRIM(多字元), STD/BIT_OR/BIT_AND, REPLACE 等。--ansi) 行為變更|| 改為字串串接。" 成為識別碼引號 (如 `)。REAL 同義 FLOAT 而非 DOUBLE。-- 註釋需後接空白。VARCHAR 儲存時移除尾部空格。CHAR 某情況靜默轉為 VARCHAR。DROP TABLE 不自動撤銷權限,需顯式 REVOKE。JOIN、臨時表或程式語言處理。INSERT INTO ... SELECT 或 CREATE TABLE ... SELECT。