萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL INT 整數類型範圍、顯示寬度與儲存空間完整解析

整數類型對照表

類型位元組有號範圍無號範圍
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,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8070 ~ 18,446,744,073,709,551,615

關鍵觀念釐清

1. 括號內的數字(如 INT(11))是「顯示寬度」,不是長度限制

  • 只影響 ZEROFILL 時的前導零顯示(如 INT(5) ZEROFILL 插入 12 → 顯示 00012)。
  • 不影響儲存空間(永遠 4 位元組)、不影響最大值、不限制插入值位數。

2. UNSIGNED 禁止負數,範圍從 0 開始

CREATE TABLE t (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY);

3. AUTO_INCREMENT 最大值受類型上限限制

  • INT UNSIGNED 最大 42 億,足支撐大多數業務。
  • 若預估超過,改用 BIGINT UNSIGNED。

常見誤區 QA

誤區事實
INT(3) 只能存 3 位數可存 21 億,顯示寬度 3 僅影響 ZEROFILL 填零
顯示寬度越大越佔空間空間由類型決定,INT 永遠 4 Bytes
INT(11) 是標準寫法11 是舊版預設顯示寬度,無特殊意義

官方文件範例:ENUM 非二進位

CREATE TABLE bits (val ENUM('T','F') NOT NULL);
INSERT INTO bits (val) VALUES ('W'), ('T'), ('F');
-- Warning: Data truncated for column 'val' at row 1
SELECT COUNT(DISTINCT val) FROM bits; -- 返回 3(含空字串錯誤值)

說明:ENUM 插入非定義值會存入空字串(數值 0),而非報錯中止,需注意。

copyright © 萬盛學電腦網 all rights reserved