| 特性 | SQL Server | MySQL |
|---|---|---|
| Unicode 字符 | NCHAR/NVARCHAR/NTEXT | 無對應類型,統一用 CHAR/VARCHAR/TEXT + utf8mb4 |
| 自增列 | IDENTITY(1,1) | AUTO_INCREMENT |
| 大對象統一類型 | VARCHAR(MAX)/NVARCHAR(MAX)/VARBINARY(MAX) | 分離:TEXT/MEDIUMTEXT/LONGTEXT、BLOB/MEDIUMBLOB/LONGBLOB |
| 無符號整數 | 不支持 | 支持 UNSIGNED,正數範圍翻倍 |
| 日期時間 | DATETIME、DATETIME2、DATE、TIME (2008+) | DATETIME、TIMESTAMP、DATE、TIME、YEAR |
| 默認當前時間 | DEFAULT GETDATE() | 僅 TIMESTAMP DEFAULT CURRENT_TIMESTAMP(5.6.5+ DATETIME 也支持) |
| 枚舉/集合 | 不支持 | ENUM、SET |
| 操作 | SQL Server | MySQL |
|---|---|---|
| 標識符引用 | [identifier] | `identifier`(反引號) |
| 建表指定引擎 | 無(單一引擎) | ENGINE=InnoDB 必須指定 |
| 刪除表安全寫法 | IF EXISTS (SELECT * FROM sysobjects ...) DROP TABLE t | DROP TABLE IF EXISTS t |
| 默認值語法 | DEFAULT ((0)) 雙括號 | 不允許雙括號,DEFAULT 0 |
| 插入語法 | INSERT INTO t (c1,c2) VALUES (1,2) | 另支持 INSERT INTO t SET c1=1, c2=2、VALUES (1,2),(3,4)... 批量 |
| 分頁 | TOP N、ROW_NUMBER() OVER() (2005+) | LIMIT offset, rows(極簡) |
| 替換插入 | MERGE (2008+) | REPLACE INTO、INSERT ... ON DUPLICATE KEY UPDATE |
| 存儲過程 | T-SQL,成熟穩定 | 5.0+ 支持,早期版本穩定性較弱 |
| 功能 | SQL Server | MySQL |
|---|---|---|
| 當前日期時間 | GETDATE() | NOW()(日期時間)、CURDATE()(日期) |
| 字符串連接 | + 或 CONCAT() | CONCAT()(|| 需 PIPES_AS_CONCAT 模式) |
| 判空 | ISNULL(expr, val) | IFNULL(expr, val)、COALESCE() |
| 取前 N 行 | TOP N | LIMIT N |
| 特性 | SQL Server | MySQL |
|---|---|---|
| 非聚簇索引創建 | CREATE NONCLUSTERED INDEX idx ON t(c1, c2) | 建表時 KEY idx (c1, c2) 或 CREATE INDEX idx ON t(c1, c2) |
| TEXT 列默認值 | 允許 | 不允許(報錯) |
| 單表最大行長度 | 8060 字節(含變長列溢出頁) | 65535 字節(嚴格限制) |
| 維度 | SQL Server | MySQL |
|---|---|---|
| 安裝包大小 | GB 級(含 SSIS/SSAS/SSRS) | ~110MB(免安裝版),極輕量 |
| 管理工具 | SSMS(功能極強、圖形化完善) | MySQL Workbench、DBeaver、phpMyAdmin、命令行,體驗稍弱 |
| 資源佔用 | 較重,CPU/內存佔用高 | 輕量,同等負載消耗更少資源 |
| PHP 連接 | sqlsrv/pdo_sqlsrv 擴展 | mysqli/pdo_mysql 原生成熟 |
| 授權模式 | 商業授權(Core/Server+CAL) | GPL 社區版 + 企業版訂閱 |
| 高可用方案 | AlwaysOn AG、FCI、Log Shipping | MGR (InnoDB Cluster)、MHA、Orchestrator、Galera、主從/半同步 |
| 分區表 | 原生分區函數/方案 | 5.1+ 原生分區,8.0 增強 |
utf8mb4_general_ci 或 utf8mb4_0900_ai_ci。[] → `。IDENTITY → AUTO_INCREMENT,注意種子/步長映射。VARCHAR(MAX) → LONGTEXT / LONGBLOB。OFFSET ... ROWS FETCH NEXT ... / ROW_NUMBER() → LIMIT。GETDATE() → CURRENT_TIMESTAMP(僅 TIMESTAMP 或 5.6.5+ DATETIME)。SQL Server 勝在企業級工具鏈、T-SQL 成熟度、圖形化管理;MySQL 勝在輕量、開源、高併發性價比、雲原生生態。遷移核心是語法映射、類型對齊、隔離級別語義對齊,建議借助 SQLines、AWS SCT、DataGrip 等工具輔助,並全量回歸測試。