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

MySQL 整數型別顯示寬度詳解:INT(11) 不限制儲存範圍

     編輯:MySQL 綜合教學

MySQL 整數型別顯示寬度詳解:INT(11) 不限制儲存範圍

MySQL 獨有的「顯示寬度」語法(如 INT(11)、BIGINT(20))常被誤解為限制儲存長度。本文釐清其真實作用、預設值、與 SQL Server 的差異,避免設計誤區。

語法與定義

CREATE TABLE tb_emp ( id BIGINT(1) );

括號內數字為顯示寬度,指定查詢結果最多顯示的數字字元數(不足時左側補空格)。

核心特性

特性說明
不影響儲存範圍INT(3) 仍佔 4 位元組,允許值 -2147483648 ~ 2147483647
不影響儲存空間永遠依型別本身(TINYINT 1B、SMALLINT 2B、MEDIUMINT 3B、INT 4B、BIGINT 8B)
超寬度值仍可插入並完整顯示插入 19999 到 YEAR INT(4),SELECT 仍顯示 19999
僅影響某些客戶端顯示格式配合 ZEROFILL 時,左側補 0 而非空格

預設顯示寬度

若不指定,MySQL 依型別給預設值:

  • TINYINT → 3 或 4(視 UNSIGNED)
  • SMALLINT → 5 或 6
  • MEDIUMINT → 7 或 8
  • INT → 10 或 11
  • BIGINT → 19 或 20

與 SQL Server 差異

-- SQL Server:報錯
CREATE TABLE abc (id INT(11));
-- Msg 2716: 不能對數據類型 int 指定列寬。

SQL Server 無顯示寬度概念,長度控制需靠 CHECK 約束或應用層驗證。

ZEROFILL 實戰範例

CREATE TABLE t (a INT(5) ZEROFILL, b INT(5));
INSERT INTO t VALUES (12, 12);
SELECT * FROM t;
-- 結果:a=00012, b=12(b 若為數值型客戶端可能不補空格)

總結

  1. INT(N) 中的 N 只是顯示提示,非長度限制。
  2. 儲存上限永遠由型別決定(INT 為 231-1)。
  3. 若需限制範圍,請用 CHECK (col BETWEEN 0 AND 999)(8.0.16+ 支援)或應用層驗證。
  4. 搭配 ZEROFILL 可用於單號、流水號格式化顯示。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved