MySQL 與 SQL Server(T-SQL)在語法、資料類型、函數、管理工具、授權模式等 25 項核心差異全面對比,助跨平台遷移與多資料庫開發。
| # | 項目 | MySQL | SQL Server |
|---|---|---|---|
| 1 | ENUM/SET 類型 | ✅ 支援 | ❌ 不支援 |
| 2 | NCHAR/NVARCHAR/NTEXT | ❌ 不支援 | ✅ 支援(Unicode) |
| 3 | 自增語法 | AUTO_INCREMENT | IDENTITY(1,1) |
| 4 | 預設值雙括號 | 不允許 ((0)) | 允許 ((0)) |
| 5 | 指定儲存引擎 | 建表必須 ENGINE=... | 單一引擎 |
| 6 | 識別符號 | 反引號 ` | 方括號 [] |
| 7 | 取得當前日期時間 | NOW() / CURDATE() | GETDATE() |
| 8 | REPLACE INTO / MERGE | REPLACE INTO | 2008+ MERGE |
| 9 | INSERT SET 語法 | INSERT INTO t SET c='v' | 不支援 |
| 10 | 多列 VALUES | VALUES (1,1),(2,2)... | 不支援(需 UNION ALL) |
| 11 | 分頁 LIMIT | LIMIT offset, count | TOP / ROW_NUMBER() OVER() |
| 12 | 儲存引擎多樣性 | 多引擎可混用 | 單一引擎 |
| 13 | DATETIME 預設 CURRENT_TIMESTAMP | 不支援(用 TIMESTAMP) | 支援 |
| 14 | DROP IF EXISTS | DROP TABLE IF EXISTS t | 需查 sysobjects 判斷 |
| 15 | 無號整數 | ✅ UNSIGNED 多 1 倍範圍 | ❌ 不支援 |
| 16 | VARCHAR(MAX) | ❌ 不支援 | ✅ 兼容 BLOB/大文本 |
| 17 | 建立非叢集索引 | KEY idx (a,b) | CREATE NONCLUSTERED INDEX... |
| 18 | TEXT 預設值 | 不允許 | 允許 |
| 19 | 單表欄位總長度 | 65,535 bytes | 8,060 bytes (頁限制) |
| 20 | 安裝體積/複雜度 | ~110MB 免安裝版,極簡 | GB 級,安裝複雜 |
| 21 | 管理工具 | MySQL Workbench, phpMyAdmin | SSMS(功能最強) |
| 22 | 儲存程序成熟度 | 較新,穩定性待驗證 | 成熟穩定 |
| 23 | 資源消耗 | 同負載下 CPU/記憶體較低 | 資源消耗較高 |
| 24 | PHP 連線函數 | mysqli_* | sqlsrv_* / mssql_* |
| 25 | DATE/TIME/YEAR 類型 | ✅ 獨立類型 | 2008+ 才支援 DATE/TIME |
` vs SQL Server 方括號 [],自動化腳本需全域替換。LIMIT → OFFSET ... ROWS FETCH NEXT ... ROWS ONLY (2012+)。NOW() → GETDATE(),DATE_FORMAT → FORMAT/CONVERT。VALUES 在 SQL Server 需拆分或用 UNION ALL。