MariaDB 作為 MySQL 的社區分支,完全兼容 MySQL 協議與 SQL 語法,廣泛替代 MySQL 於 Linux 發行版默認倉庫。本文系統整理庫級 DDL 操作、數據類型完整對照表、存儲引擎差異,為遷移與新項目選型提供參考。
| 維度 | MySQL | MariaDB |
| 授權 | GPL (Oracle 擁有) | GPL/LGPL (社區驅動) |
| 默認存儲引擎 | InnoDB | XtraDB (InnoDB 增強分支) / InnoDB |
| 新增引擎 | — | ColumnStore (列式)、Spider (分片)、Connect (異構數據源) |
| 功能增強 | — | 窗口函數更早、CHECK 約束更早、JSON 函數豐富、序列對象 |
| 兼容性 | 基準 | 协议、API、SQL 99% 兼容,可直接替換 |
二、 庫級 DDL 操作實戰
1. 創建數據庫
-- 方式一:mysqladmin (交互確認)
mysqladmin -u root -p drop testdb1
-- 方式二:SQL
DROP DATABASE `testdb2`;
3. 選擇數據庫與查看表
| 類型 | 存儲字節 | 有符號範圍 | 無符號範圍 | 別名/備註 |
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 | BOOL/BOOLEAN = TINYINT(1) |
| SMALLINT | 2 | -32,768 ~ 32,767 | 0 ~ 65,535 | |
| MEDIUMINT | 3 | -8,388,608 ~ 8,388,607 | 0 ~ 16,777,215 | |
| INT / INTEGER | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 ~ 4,294,967,295 | 主鍵首選 |
| BIGINT | 8 | -9.22e18 ~ 9.22e18 | 0 ~ 1.84e19 | 分布式 ID、毫秒時間戳 |
| FLOAT | 4 | ±3.4e38 (7 位精度) | — | 單精度,不精確 |
| DOUBLE | 8 | ±1.7e308 (15 位精度) | — | 雙精度,不精確 |
| DECIMAL(M,D) / NUMERIC | M+2 或 D+2 | 取決於 M,D | — | 精確小數,**金額必用** |
| BIT(M) | ≈ (M+7)/8 | 位字段 | — | M=1 可作布爾 |
MariaDB/MySQL 數據類型體系龐大而精密,**選型原則始終是:足夠用、越小越好、語義精確、拒絕浮點數存金額、大字段外存**》。掌握本文完整對照表與決策樹,能在建表、變更、遷移、異構同步等場景中做出最優類型選擇,為數據質量與查詢性能奠定堅實基礎。