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

MySQL 數據類型全解析:整數、浮點/定點、日期時間、字符串、二進制、枚舉/集合選型指南

     編輯:MySQL 綜合教學

MySQL 數據類型全解析:整數、浮點/定點、日期時間、字符串、二進制、枚舉/集合選型指南

正確選擇數據類型是資料庫設計的基石,影響存儲空間、查詢性能、數據完整性。本文按類別整理 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-2^63 ~ 2^63-10 ~ 2^64-1

選型原則:INT 為通用首選;狀態碼、枚舉值用 TINYINT;大量主鍵自增用 BIGINT;明確非負加 UNSIGNED 翻倍範圍。

二、浮點與定點類型(小數)

類型字節精度特點
FLOAT4單精度,約 7 位有效數字,有誤差
DOUBLE8雙精度,約 15 位有效數字,誤差較小
DECIMAL(M,D)M+2精確定點數,M 總位數,D 小數位,金融必用

選型原則:涉及金額、精確計算務必用 DECIMAL;科學計算、近似值可用 DOUBLE;FLOAT 僅用於極不敏感的輕量場景。

三、日期時間類型

類型字節範圍特點
DATE41000-01-01 ~ 9999-12-31僅日期
DATETIME81000-01-01 00:00:00 ~ 9999-12-31 23:59:59日期+時間,無時區
TIMESTAMP41970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC自動轉換時區,範圍較小
TIME3-838:59:59 ~ 838:59:59僅時間
YEAR11901 ~ 2155僅年份

選型原則:需時區感知用 TIMESTAMP(如創建/更新時間戳);歷史/未來寬範圍用 DATETIME;僅需日期/時間/年份分別用 DATE/TIME/YEAR 節省空間。

四、字符串類型

類型最大長度存儲特點
CHAR(M)255 字符固定長度,不足右填空格,適合定長代碼(如 MD5、ISO 代碼)
VARCHAR(M)65,535 字符變長,實際長度+1/2 字節存長度,通用首選
TINYTEXT255 字節不指定長度,存儲開銷 +2 字節
TEXT65,535 字節長文本,不可有 DEFAULT 值
MEDIUMTEXT16,777,215 字節中等長文本
LONGTEXT4,294,967,295 字節超長文本

核心差異:CHAR(5) 存 'abc' 佔 5 字節;VARCHAR(5) 存 'abc' 佔 3+1=4 字節。頻繁 UPDATE 定長列用 CHAR 減少碎片,其餘用 VARCHAR。

五、二進制類型

BINARY(M)(定長)、VARBINARY(M)(變長)存儲字節流(圖片、加密數據、文件流),與 CHAR/VARCHAR 關係同理。BLOB 系列(TINYBLOB~LONGBLOB)對應 TEXT 系列,存儲大二進制對象。

六、枚舉與集合

類型成員上限單行可選數量典型場景
ENUM('a','b',...)65,5351性別、狀態、類型等單選
SET('a','b',...)64多個(位掩碼存儲)標籤、權限、多選屬性

注意:ENUM/SET 成員順序即排序順序,修改成員需 ALTER TABLE 重建表,慎用於頻繁變動的業務字典。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved