INT(7) หมายถึงอะไร?
ตัวเลขในวงเล็บ (7) คือ Display Width (ความกว้างในการแสดงผล) ไม่ใช่ขนาดการจัดเก็บหรือขอบเขตค่า
ข้อเท็จจริงสำคัญ
- Storage: INT เสมอใช้ 4 Bytes (32-bit)
- Range: -2,147,483,648 ถึง 2,147,483,647 (Signed) / 0 ถึง 4,294,967,295 (Unsigned)
- Display Width: ใช้ร่วมกับ
ZEROFILLเติมศูนย์หน้าค่า
ตัวอย่าง: INT(7) ZEROFILL
สร้างตาราง
CREATE TABLE DisplayInt (Number INT(7) ZEROFILL);
เพิ่มข้อมูล
INSERT INTO DisplayInt VALUES (1), (12), (1234), (12345), (1234567);
ผลลัพธ์: เติมศูนย์ให้ครบ 7 หลัก
+---------+
| Number |
+---------+
| 0000001 |
| 0000012 |
| 0001234 |
| 0012345 |
| 1234567 |
+---------+
กรณีไม่มี ZEROFILL
CREATE TABLE NoZeroFill (Number INT(7));
INSERT INTO NoZeroFill VALUES (1), (12), (1234567);
SELECT * FROM NoZeroFill;
+---------+
| Number |
+---------+
| 1 |
| 12 |
| 1234567 |
+---------+
แสดงผลปกติ ไม่มีการเติมศูนย์
ข้อสังเกตเพิ่มเติม
- Display Width ไม่จำกัดค่าที่เก็บได้ (ยังเก็บ 1234567890 ได้ แม้ INT(7))
- MySQL 8.0.17+ Deprecate Display Width สำหรับ Integer Types (แสดง Warning)
- ในอนาคตอาจถูกนำออก ให้ใช้แค่
INTหรือBIGINT ZEROFILLทำให้คอลัมน์กลายเป็นUNSIGNEDอัตโนมัติ
สรุป
INT(7) = INT ธรรมดา + คำแนะนำแสดงผล 7 หลัก (ต้องมี ZEROFILL จึงมีผล) ไม่ส่งผลต่อ Storage หรือ Range