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

ความแตกต่างระหว่าง int(5) และ int(10) ใน MySQL

ความเข้าใจผิดทั่วไป

หลายคนเข้าใจผิดว่าตัวเลขในวงเล็บ int(5) หรือ int(10) กำหนด ขนาดสูงสุดของตัวเลข แต่จริงๆ แล้ว ไม่ใช่ ค่าที่เก็บได้สูงสุดของ INT เสมอเป็น 2,147,483,647 (signed) หรือ 4,294,967,295 (unsigned)

ความหมายจริงของตัวเลขในวงเล็บ

ตัวเลขในวงเล็บหมายถึง Display Width (ความกว้างในการแสดงผล) ใช้ร่วมกับ ZEROFILL เท่านั้น

ตัวอย่างแสดงผลกับ ZEROFILL

สร้างตารางทดสอบ

CREATE TABLE intVsIntAnyThingDemo (
    Number1 INT(11) UNSIGNED ZEROFILL,
    Number2 INT(13) UNSIGNED ZEROFILL
);

เพิ่มข้อมูล

INSERT INTO intVsIntAnyThingDemo VALUES 
(12345, 6789),
(3, 2),
(12, 89),
(123, 6789),
(1234, 6789);

ผลลัพธ์การแสดงผล

Number1 (INT(11))Number2 (INT(13))
000000123450000000006789
000000000030000000000002
000000000120000000000089
000000001230000000006789
000000012340000000006789

สรุปความแตกต่าง

คุณสมบัติINT(5)INT(10)
ขนาดเก็บข้อมูล4 ไบต์4 ไบต์
ค่าสูงสุด (Signed)2,147,483,6472,147,483,647
ค่าสูงสุด (Unsigned)4,294,967,2954,294,967,295
ความกว้างแสดงผล (ZEROFILL)5 หลัก10 หลัก

ข้อสังเกต

  • MySQL 8.0.17+ แสดงคำเตือนว่า ZEROFILL และ Display Width จะถูกนำออกในอนาคต
  • แนะนำให้จัดรูปแบบการแสดงผลที่ Application Layer แทน
  • ใช้ UNSIGNED หากไม่ต้องการค่าลบ (เพิ่มช่วงค่าบวกเป็น 2 เท่า)