首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 資料類型詳解:選型原則與避坑指南

     編輯:MySQL 綜合教學

MySQL 資料類型詳解:選型原則與避坑指南

正確選擇資料類型是高效能的基石。本文依據《高效能 MySQL》三大原則,系統梳理數值、字符串、日期時間、二進制類型細節。

三大選型原則

  1. 越小越好:能正確存儲的前提下,選占用空間最小的類型。
  2. 越簡單越好:簡單類型(整數、定長)CPU 運算更少。
  3. 盡量避免 NULL:NULL 列增加索引、統計、比較複雜度,查詢優化更難。

1. 整數類型

類型儲存有符號範圍無符號範圍
TINYINT1 Byte-128 ~ 1270 ~ 255
SMALLINT2 Bytes-32,768 ~ 32,7670 ~ 65,535
MEDIUMINT3 Bytes-8,388,608 ~ 8,388,6070 ~ 16,777,215
INT4 Bytes-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
BIGINT8 Bytes±9.22×10¹⁸0 ~ 1.84×10¹⁹

注意:INT(11) 中的 11 僅為顯示寬度,不影響儲存範圍。INT(1) 與 INT(20) 磁盤佔用相同。

2. 浮點與定點數

類型精度儲存說明
FLOAT(m,d)單精度 (~7 位)4 Bytes近似值,科學計算適用
DOUBLE(m,d)雙精度 (~15 位)8 Bytes近似值,精度要求高時用
DECIMAL(m,d)精確變長 (≈ m/2 Bytes)精確值,財務/金額必選

DECIMAL(18,9):小數點前後各 9 位,共 9 Bytes(4+1+4)。
大數據量時可考慮 BIGINT 存儲「分」單位整數替代 DECIMAL。

3. 字符串類型

類型最大長度儲存方式適用場景
CHAR(n)255 字符定長,右補空格固定長度(MD5、UUID、國籍代碼)
VARCHAR(n)65,535 字符變長,實際長度+1/2 Bytes可變長度,通用首選
TINYTEXT255 字符變長,+2 Bytes極短文本
TEXT65,535 字符變長,+2 Bytes較長文本
MEDIUMTEXT16,777,215變長,+3 Bytes長文本
LONGTEXT4,294,967,295變長,+4 Bytes超長文本

關鍵差異:

  • CHAR 尾部空格會被截斷,VARCHAR 保留。
  • CHAR 定長便於索引,但浪費空間;VARCHAR 節省空間,需額外長度前綴。
  • TEXT 不能有 DEFAULT 值;建索引需指定前綴長度;查詢速度通常慢於 VARCHAR。

4. 二進制類型 (BLOB)

類型最大長度
TINYBLOB255 Bytes
BLOB65,535 Bytes
MEDIUMBLOB16,777,215 Bytes
LONGBLOB4,294,967,295 Bytes
  • BLOB 二進制存儲,不分大小寫;TEXT 文本存儲,分大小寫。
  • BLOB 只能整體讀寫;TEXT 可指定字符集。

5. 日期時間類型

選擇建議:需時區感知或自動記錄修改時間用 TIMESTAMP;其餘用 DATETIME(範圍更大、無 2038 年問題)。

6. 常用屬性關鍵字

  • NULL / NOT NULL
  • DEFAULT value
  • PRIMARY KEY
  • AUTO_INCREMENT(整數類型)
  • UNSIGNED(無符號,範圍翻倍)
  • CHARACTER SET charset_name
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型範圍儲存特性
DATE1000-01-01 ~ 9999-12-313 Bytes僅日期
TIME-838:59:59 ~ 838:59:593 Bytes僅時間
DATETIME1000-01-01 00:00:00 ~ 9999-12-31 23:59:598 Bytes日期+時間,無時區
TIMESTAMP1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC4 Bytes自動更新(預設 ON UPDATE CURRENT_TIMESTAMP),帶時區轉換