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

MySQL int(11) 顯示寬度誤區:儲存大小與顯示寬度的本質區別

     編輯:MySQL 綜合教學

MySQL int(11) 顯示寬度誤區:儲存大小與顯示寬度的本質區別

澄清 int(11) 中數字 11 的真實含義:僅為顯示寬度,不影響儲存範圍。

整數型別儲存大小對照

型別位元組有號範圍無號範圍
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 永遠佔 4 位元組,int(5)、int(11)、int(20) 儲存能力完全相同。

顯示寬度 (M) 真正作用

僅在 UNSIGNED ZEROFILL** 組合下生效:不足寬度左側補 0。

CREATE TABLE foo (bar INT(5) UNSIGNED ZEROFILL);
INSERT INTO foo VALUES (42), (101), (9876543);
SELECT * FROM foo;
+---------+
| bar     |
+---------+
| 00042   |
| 00101   |
| 9876543 |  -- 超過寬度正常顯示,不截斷
+---------+

常見誤區

  • ❌ 以為 int(3) 只能存 3 位數 → 實際可存 10 位數
  • ❌ 以為 int(11) 比 int(4) 佔更多空間 → 同為 4 bytes
  • ✅ 正確理解:M 只影響 ZEROFILL 顯示格式,不影響儲存、索引、計算

BOOL 型別特例

BOOL / BOOLEAN 是 TINYINT(1) 同義字,但 TINYINT(1) 仍可存 100 等超出 0/1 的值,應用層需自行約束。

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