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

ความแตกต่างระหว่าง TINYINT(1) และ TINYINT(2) ใน MySQL

ตัวเลขในวงเล็บของ TINYINT คือ Display Width ไม่ใช่ขนาดข้อมูล

สรุป: TINYINT(1) และ TINYINT(2) เหมือนกันทุกประการ ด้านขนาดการจัดเก็บ (1 byte) และช่วงค่า (-128 ถึง 127 หรือ 0 ถึง 255 UNSIGNED)

ตัวเลขในวงเล็บ ไม่ได้จำกัดค่าที่เก็บได้ แต่มีผลเฉพาะเมื่อใช้กับ ZEROFILL (เติมศูนย์หน้าตัวเลข)

ตัวอย่างสาธิตด้วย ZEROFILL

CREATE TABLE tinyIntDemo (
    Number1 TINYINT(1) ZEROFILL,
    Number2 TINYINT(2) ZEROFILL
);

INSERT INTO tinyIntDemo VALUES (1, 1);
SELECT * FROM tinyIntDemo;

ผลลัพธ์:

Number1Number2
101

อธิบาย

  • TINYINT(1) ZEROFILL: แสดงผลกว้าง 1 ตัวอักษร → 1
  • TINYINT(2) ZEROFILL: แสดงผลกว้าง 2 ตัวอักษร → 01 (เติม 0 นำหน้า)

ข้อเท็จจริงเพิ่มเติม

  • MySQL 8.0.17+ แสดง Warning ว่า ZEROFILL และ Display Width จะถูก Deprecated ในอนาคต
  • ควรหลีกเลี่ยงการพึ่งพา Display Width ใน Application Logic
  • หากต้องการจำกัดค่า ให้ใช้ CHECK CONSTRAINT หรือจัดการที่ Application Layer

สรุป: TINYINT(1) vs TINYINT(2) → ต่างกันแค่การแสดงผลเมื่อใช้ ZEROFILL เท่านั้น