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

MySQL 數據類型完整指南:數值、字串、日期時間、空間與 JSON 類型詳解

     編輯:MySQL 綜合教學

一、數值類型

類型位元組範圍(有符號)範圍(無符號)適用場景
TINYINT1-128 ~ 1270 ~ 255布林旗標、極小整數
SMALLINT2-32,768 ~ 32,7670 ~ 65,535小範圍計數
MEDIUMINT3-8,388,608 ~ 8,388,6070 ~ 16,777,215中等整數
INT / INTEGER4-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295通用主鍵、計數器
BIGINT8-9.22e18 ~ 9.22e180 ~ 1.84e19大量主鍵、時間戳毫秒
FLOAT(M,D)4約 ±1.17e-38 ~ ±3.40e38-單精度科學計算
DOUBLE(M,D)8約 ±2.22e-308 ~ ±1.79e308-雙精度科學計算
DECIMAL(M,D) / NUMERICM/2+2 約略精確至 D 位小數-財務、金額、精確計算
BIT(M)(M+7)/8位域-位元組標誌

關鍵提醒: INT(11) 中的 11 僅為顯示寬度(ZEROFILL 時生效),不影響儲存範圍。無符號時範圍翻倍。

二、字串類型

類型最大長度儲存開銷特性
CHAR(M)255 字元M 位元組(定長)右側空格填充,適合固定長度(MD5、ISO 代碼)
VARCHAR(M)65,535 字元(共享 64KB 行上限)L+1/2 位元組變長,實際長度+1/2 字節長度前綴
TINYTEXT255 字元L+1不支援 DEFAULT、索引需指定前綴長度
TEXT65,535 字元L+2同上
MEDIUMTEXT16,777,215 字元L+3同上
LONGTEXT4,294,967,295 字元 (4GB)L+4同上
BLOB 系列對應 TEXT 四檔同 TEXT二進制字節,無字符集/校對規則,適合圖片、檔案
ENUM65,535 個元素1/2 位元組單選,內部儲存為整數索引
SET64 個成員1/2/3/4/8 位元組多選,位元組位標記

三、日期時間類型

類型位元組範圍精度備註
DATE31000-01-01 ~ 9999-12-31天
TIME3-838:59:59 ~ 838:59:59秒可存時長、非單純時間點
DATETIME81000-01-01 00:00:00 ~ 9999-12-31 23:59:59秒無時區感知,5.6.4+ 支援毫秒 DATETIME(3)
TIMESTAMP41970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC秒時區感知,自動轉換,5.6.4+ 支援毫秒
YEAR11901 ~ 2155年

選型建議: 需時區轉換、自動更新 → TIMESTAMP;歷史日期、出生日期、無時區業務 → DATETIME。

四、空間類型 (MySQL 5.7+ / 8.0)

  • GEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION
  • 支援空間索引 (SPATIAL INDEX)、R-Tree、GIS 函數 (ST_Distance, ST_Contains 等)

五、JSON 類型 (MySQL 5.7.8+)

  • 原生二進制儲存,支援 JSON_EXTRACT, ->, ->>, JSON_ARRAY, JSON_OBJECT, JSON_MERGE 等函數
  • 虛擬欄位索引:CREATE INDEX idx_json ON t((json_col->>'$.key'))
  • 文檔驗證:JSON_VALID、JSON_SCHEMA_VALID (8.0.17+)

六、選型決策樹

  1. 整數 → TINYINT/SMALLINT/MEDIUMINT/INT/BIGINT(按範圍最小化)
  2. 精確小數 → DECIMAL(M,D)
  3. 近似科學數值 → FLOAT/DOUBLE
  4. 定長字串 → CHAR
  5. 變長字串 → VARCHAR(長度 < 256 用 TINYTEXT/TEXT 不如 VARCHAR 靈活)
  6. 大文本/二進制 → TEXT/BLOB 系列
  7. 枚舉/集合 → ENUM/SET(值集固定、少量)
  8. 日期時間 → DATE/TIME/DATETIME/TIMESTAMP(按時區需求)
  9. 地理空間 → GEOMETRY 系列
  10. 半結構化文檔 → JSON
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved