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

MySQL 基本數據類型全覽:整數、浮點、日期、字符串選型指南

     編輯:MySQL 綜合教學

MySQL 基本數據類型全覽:整數、浮點、日期、字符串選型指南

選對類型 = 省空間 + 快查詢。本文按存儲容量從小到大梳理 MySQL 核心類型,附帶範圍、存儲字節、選型建議。

一、整數類型(精確數值)

類型存儲有符號範圍無符號範圍典型場景
TINYINT1 字節-128 ~ 1270 ~ 255布爾、狀態、枚舉(0/1/2)
SMALLINT2 字節-32,768 ~ 32,7670 ~ 65,535小範圍計數、年齡
MEDIUMINT3 字節-8,388,608 ~ 8,388,6070 ~ 16,777,215中等計數、顏色 RGB
INT / INTEGER4 字節-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295**主鍵自增首選**、通用計數
BIGINT8 字節-9.22e18 ~ 9.22e180 ~ 1.84e19巨大 ID、時間戳毫秒、流水號

提示:UNSIGNED 可將正數範圍翻倍,不改變存儲大小。ZEROFILL 自動補零顯示。AUTO_INCREMENT 僅允許一列,需配合主鍵/唯一鍵。

二、浮點/定點類型(近似/精確小數)

類型存儲精度範圍適用場景
FLOAT(M,D)4 字節~7 位有效數字±1.17E-38 ~ ±3.40E+38科學計算、不需精確金額
DOUBLE(M,D)8 字節~15 位有效數字±2.22E-308 ~ ±1.79E+308高精度科學計算
DECIMAL(M,D)M+2 字節精確到 D 位小數取決於 M,D**金額、價格、比率** 必用

M=總位數,D=小數位數。DECIMAL 內部以字符串存儲,計算精確但較慢。

三、日期時間類型

類型存儲範圍零值備註
YEAR1 字節1901 ~ 21550000僅存年份
DATE3 字節1000-01-01 ~ 9999-12-310000-00-00最常用日期類型
TIME3 字節-838:59:59 ~ 838:59:5900:00:00可存時長(超過 24h)
DATETIME8 字節1000-01-01 00:00:00 ~ 9999-12-31 23:59:590000-00-00 00:00:00無時區,應用層處理時區
TIMESTAMP4 字節1970-01-01 08:00:01 ~ 2038-01-19 11:14:07 (UTC)0000-00-00 00:00:00**帶時區**,寫入 NULL 自動設為當前時間

選型建議:DATETIME 範圍大、無時區轉換,適合業務時間;TIMESTAMP 自動維護創建/更新時間,但 2038 年問題需注意。

四、字符串類型

類型最大長度存儲開銷特點
CHAR(M)255 字節M 字節(定長,右補空格)極短固定長(如 MD5、ISO 代碼)
VARCHAR(M)65,535 字節L+1/2 字節(可變長)**最常用**,動態長度文本
TINYTEXT255 字節L+1 字節無默認值,不建議用
TEXT64 KBL+2 字節較長文本
MEDIUMTEXT16 MBL+3 字節長文本
LONGTEXT4 GBL+4 字節超長文本
ENUM65,535 個成員1-2 字節單選枚舉(如狀態:'pending','done')
SET64 個成員1-8 字節多選集合(如標籤:'tag1','tag2')

注意:TEXT/BLOB 類型無法加默認值、無法建全長索引(需指定前綴長度)、臨時表落盤較慢,能用 VARCHAR 盡量不用。

五、選型口訣

  • 整數:夠用就行,越小越好,主鍵用 BIGINT/UNSIGNED AUTO_INCREMENT。
  • 金額:只用 DECIMAL,拒絕 FLOAT/DOUBLE。
  • 日期:業務時間用 DATETIME,系統維護時間用 TIMESTAMP。
  • 字符串:定長用 CHAR,其餘用 VARCHAR,大文本拆表或存對象存儲路徑。
  • 枚舉/集合:固定少量值用 ENUM/SET,極省空間且自帶約束。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved