BOOLEAN และ TINYINT(1) เป็น Synonyms กันทุกประการ แตกต่างกันแค่ "ความหมาย" (Semantics) เท่านั้น
ตัวอย่าง BOOLEAN
mysql> CREATE TABLE BooleanDemo (Light BOOLEAN); mysql> INSERT INTO BooleanDemo VALUES (TRUE); mysql> SELECT * FROM BooleanDemo; +-------+ | Light | +-------+ | 1 | +-------+
ตัวอย่าง TINYINT(1)
mysql> CREATE TABLE Tinyint1Demo (Light TINYINT(1)); mysql> INSERT INTO Tinyint1Demo VALUES (1); mysql> SELECT * FROM Tinyint1Demo; +-------+ | Light | +-------+ | 1 | +-------+
ทั้งคู่เก็บค่าเป็น 1 (TRUE) และ 0 (FALSE) เหมือนกันหมด
เมื่อไหร่ควรใช้ตัวไหน?
| Data Type | เหมาะสำหรับ |
|---|---|
| BOOLEAN | Logic จริง/เท็จ (True/False, Yes/No, On/Off) |
| TINYINT(1) | Flag ตัวเลข 0/1, Bitmask, ค่าที่คำนวณทางคณิตศาสตร์ |
ข้อเท็จจริง: MySQL แปลง BOOLEAN เป็น TINYINT(1) ภายในแล้วSHOW CREATE TABLEจะเห็นเป็นtinyint(1)เสมอ