Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ความหมายของ INT(7) ใน MySQL: Display Width ไม่ใช่ขนาดเก็บข้อมูล


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