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

BOOLEAN หรือ TINYINT ใน MySQL - ควรใช้ตัวไหน?

ความจริงเกี่ยวกับ BOOLEAN, BOOL และ TINYINT(1) ใน MySQL

สรุปสั้น: BOOLEAN และ BOOL เป็นเพียง Alias (ชื่อเรียกอื่น) ของ TINYINT(1) เท่านั้น

หลักฐานจากการตรวจสอบโครงสร้างตาราง

1. สร้างตารางด้วย BOOLEAN:

CREATE TABLE BooleanDemo (
    IsOn BOOLEAN
);

ตรวจสอบโครงสร้างจริง:

SHOW CREATE TABLE BooleanDemo;

ผลลัพธ์:

CREATE TABLE `booleandemo` (
  `IsOn` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

2. สร้างตารางด้วย BOOL:

CREATE TABLE BoolDemo (
    validUser BOOL
);

ตรวจสอบโครงสร้างจริง:

SHOW CREATE TABLE BoolDemo;

ผลลัพธ์:

CREATE TABLE `booldemo` (
  `validUser` tinyint(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

การทดสอบการเก็บค่า

ทั้ง BOOLEAN และ BOOL เก็บค่าได้เหมือน TINYINT(1):

  • TRUE หรือ true → เก็บเป็น 1
  • FALSE หรือ false → เก็บเป็น 0
  • ตัวเลข 0 → เก็บเป็น 0
  • ตัวเลขไม่ใช่ 0 → เก็บเป็น 1

คำแนะนำ

  • ใช้ BOOLEAN หรือ BOOL เพื่อความอ่านง่าย (Semantic clarity)
  • ในระดับ Storage ทั้งคู่เหมือนกันทุกประการ
  • ไม่มีข้อได้เปรียบด้านประสิทธิภาพหรือพื้นที่จัดเก็บ