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

MySQL 五大核心資料類型詳細解析

     編輯:MySQL 綜合教學

MySQL 資料類型體系概覽

MySQL 提供豐富的資料類型,合理選型直接影響儲存效率、查詢效能與應用正確性。本文將五大核心類型——字串、文本、數值、邏輯、日期——逐一拆解,對比易混淆類型,提供選型建議。

一、字串類型:CHAR vs VARCHAR

特性CHAR(N)VARCHAR(N)
儲存方式固定長度,不足右側填空格可變長度,實際長度+1~2 位元組長度前綴
最大長度255 字元65,535 位元組(受行大小限制)
取出長度永遠為 N實際資料長度
空間效率低(固定佔用)高(按實際佔用)
適合場景長度固定、頻繁更新的短碼(如 MD5、ISO 代碼)長度變動大、佔多數的業務欄位

實務建議:現代應用優先用 VARCHAR,避免 TRIM() 處理尾部空格,節省儲存與網路傳輸。

二、文本類型:TEXT 家族

  • TINYTEXT (255 B)、TEXT (64 KB)、MEDIUMTEXT (16 MB)、LONGTEXT (4 GB)
  • 無長度參數,離頁儲存(指標存在行內,內容另存)
  • 警示:任意寫入(含空值)即佔用最小 2K 頁面空間,刪除記錄前無法回收
  • 適用:文章內容、日誌、JSON 文檔等大型非結構化文本
  • 避免濫用:索引只能建前綴、排序/分組受限、複制較慢

三、數值類型

整數家族

類型位元組有號範圍無號範圍
TINYINT1-128 ~ 1270 ~ 255
SMALLINT2-32,768 ~ 32,7670 ~ 65,535
MEDIUMINT3-8,388,608 ~ 8,388,6070 ~ 16,777,215
INT4-2,147,483,648 ~ 2,147,483,6470 ~ 4,294,967,295
BIGINT8-9.22e18 ~ 9.22e180 ~ 1.84e19

原則:能用小的就用小的。百萬級用戶表 INT UNSIGNED 足矣;狀態碼用 TINYINT。

精確小數:DECIMAL / NUMERIC

  • 語法:DECIMAL(M, D) —— M 總位數(精度),D 小數位數(標度)
  • 最大精度 65 位,標度 ≤ 精度
  • 金融、價格、比率必須用 DECIMAL,禁用 FLOAT/DOUBLE

貨幣專用:MONEY / SMALLMONEY(非標準,部分分支支援)

  • 固定 4 位小數,內部以整數儲存
  • 標準做法:用 DECIMAL(19,4) 或 BIGINT 存分/厘

四、邏輯類型:BIT / BOOLEAN

  • BIT(1) 儲存 0/1,底層為位元
  • BOOLEAN 為 TINYINT(1) 別名,TRUE=1、FALSE=0
  • 限制:建表後無法 ALTER TABLE ADD COLUMN 新增 BIT 欄位
  • 適用:複選框、啟停旗標、權限位圖

五、日期時間類型

類型位元組範圍精度時區感知
DATETIME81000-01-01 ~ 9999-12-31秒否
TIMESTAMP41970-01-01 ~ 2038-01-19秒是(儲存 UTC,顯示轉換)
DATE31000-01-01 ~ 9999-12-31天否
TIME3-838:59:59 ~ 838:59:59秒否
YEAR11901 ~ 2155年否

選型指南:
• 需時區自動換算(如全球用戶建立時間)→ TIMESTAMP
• 歷史/未來日期、生日、排程 → DATETIME 或 DATE
• 5.6.4+ 支援 DATETIME(6) 微秒精度

總結:選型決策樹

  1. 是否為大文本?→ TEXT 家族
  2. 是否為真/假?→ BOOLEAN / BIT(1)
  3. 是否為日期時間?→ DATETIME / TIMESTAMP / DATE
  4. 是否為精確小數?→ DECIMAL(M,D)
  5. 是否為整數?→ 最小足夠的 INT 類型
  6. 其餘 → VARCHAR(長度評估 + 20% 緩衝)

正確的資料類型是高效能、低維護成本資料庫的基石。

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