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

MySQL TINYINT 類型深度解析:存儲範圍、顯示寬度與陷阱

     編輯:MySQL 綜合教學

MySQL TINYINT 類型深度解析

TINYINT 佔用 1 字節(8 位),是 MySQL 最小的整數類型。常用於布爾標誌、狀態碼、小範圍計數。

存儲範圍

類型有符號範圍無符號範圍
TINYINT-128 ~ 1270 ~ 255

顯示寬度誤區

TINYINT(3) 中的 3 僅影響顯示寬度(配合 ZEROFILL 左填 0),不限制存儲範圍。

CREATE TABLE t (c TINYINT(3) ZEROFILL);
INSERT INTO t VALUES (5), (100);
SELECT * FROM t;  -- 顯示 005, 100

常見陷阱

  1. 布爾值:MySQL 無 Boolean 類型,BOOL/BOOLEAN 別名為 TINYINT(1)。非 0 即 true,但存儲仍佔 1 字節。
  2. 自增主鍵:TINYINT AUTO_INCREMENT 最大 127/255,極易耗盡,禁用於主鍵。
  3. 無符號陷阱:TINYINT UNSIGNED 範圍 0-255,減法運算可能下溢報錯(嚴格模式)。
  4. JOIN/比較:與 INT 列 JOIN 時隱式轉換可能導致索引失效,建議統一類型。

最佳實踐

  • 狀態/標誌位:TINYINT UNSIGNED NOT NULL DEFAULT 0。
  • 極小計數(<100):TINYINT UNSIGNED。
  • 主鍵/外鍵/大計數:至少 SMALLINT/INT/BIGINT。
  • 避免 ZEROFILL(隱含 UNSIGNED),應用層格式化更靈活。

總結

TINYINT 省空間但範圍極小,顯示寬度不限制值域。正確選型:標誌位/微小計數用 TINYINT,其餘場景升級到 INT/BIGINT,避免溢出與隱式轉換性能損失。

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