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

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

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เหมาะสำหรับ
BOOLEANLogic จริง/เท็จ (True/False, Yes/No, On/Off)
TINYINT(1)Flag ตัวเลข 0/1, Bitmask, ค่าที่คำนวณทางคณิตศาสตร์
ข้อเท็จจริง: MySQL แปลง BOOLEAN เป็น TINYINT(1) ภายในแล้ว SHOW CREATE TABLE จะเห็นเป็น tinyint(1) เสมอ