理解儲存引擎特性與資料類型選擇,是資料庫設計效能與正確性的基礎。
SHOW ENGINES\G; SHOW VARIABLES LIKE 'have%';
SHOW VARIABLES LIKE 'storage_engine%';
my.ini:default-storage-engine=INNODB| 類型 | 位元組 | 有號範圍 | 無號範圍 |
|---|---|---|---|
| TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
| SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
| MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
| INT / INTEGER | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 |
| BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 18446744073709551615 |
查詢說明:HELP INT;
| 類型 | 位元組 | 說明 |
|---|---|---|
| FLOAT | 4 | 單精度,約 7 位有效數字 |
| DOUBLE | 8 | 雙精度,約 15 位有效數字 |
| DECIMAL(M,D) / DEC(M,D) | M+2 | 精確定點數,金額必用。M=總位數(含小數點), D=小數位 |
| BIT | 1~8 | 位元欄位 |
例:DECIMAL(18,4) → 13 位整數 + 1 小數點 + 4 位小數
| 類型 | 位元組 | 範圍/格式 | 適用場景 |
|---|---|---|---|
| DATE | 4 | 1000-01-01 ~ 9999-12-31 | 僅需年月日 |
| DATETIME | 8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | 完整日期時間 |
| TIMESTAMP | 4 | 1970-01-01 ~ 2038-01-19 (UTC) | 自動更新為當前時間 |
| TIME | 3 | -838:59:59 ~ 838:59:59 | 僅時分秒 |
| YEAR | 1 | 1901 ~ 2155 | 僅年份,節省空間 |
超出範圍會插入預設值 (0000-00-00 等)
| 類型 | 長度 | 特性 |
|---|---|---|
| CHAR(M) | 0~255 字元 | 定長,不足右補空格 |
| VARCHAR(M) | 0~65535 字元 | 變長,需 1-2 位元組記錄長度 |
編碼影響:UTF-8 中文 3 位元組,GBK 中文 2 位元組
| 類型 | 最大長度 | 用途 |
|---|---|---|
| TINYTEXT / TINYBLOB | 255 位元組 | 短文本/二進制 |
| TEXT / BLOB | 65,535 位元組 (64KB) | 一般文本/二進制 |
| MEDIUMTEXT / MEDIUMBLOB | 16,777,215 位元組 (16MB) | 中等長度 |
| LONGTEXT / LONGBLOB | 4,294,967,295 位元組 (4GB) | 長文本/大檔案 |
差異:TEXT 系列存字元 (依字元集),BLOB 系列存位元組 (圖片、音訊、視訊)
| 類型 | 說明 |
|---|---|
| BINARY(M) | 定長二進制,不足右補 0x00 |
| VARBINARY(M) | 變長二進制 |
相當於 CHAR/VARCHAR 的二進制版本
DECIMALTIMESTAMP / DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPTEXT;二進制檔案 → BLOB