Data Type สำหรับ Boolean ใน MySQL
MySQL ไม่มี Boolean type จริงๆ ใช้ synonyms ต่อไปนี้ ซึ่งภายในจะเป็น TINYINT(1)
BOOLBOOLEANTINYINT(1)
ค่า 0 = FALSE, 1 = TRUE, ค่าอื่นๆ ที่ไม่ใช่ 0 = TRUE
ตัวอย่างสร้างตารางและตรวจสอบโครงสร้าง
mysql> CREATE TABLE AddBoolDemo (
-> isToggle BOOL
-> );
Query OK, 0 rows affected (1.24 sec)
mysql> SHOW CREATE TABLE AddBoolDemo\G
*************************** 1. row *************************** Table: AddBoolDemo Create Table: CREATE TABLE `addbooldemo` ( `isToggle` tinyint(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec)
เห็นว่า BOOL ถูกแปลงเป็น tinyint(1) อัตโนมัติ
Insert ค่าต่างๆ
mysql> INSERT INTO AddBoolDemo VALUES(TRUE); mysql> INSERT INTO AddBoolDemo VALUES(FALSE); mysql> INSERT INTO AddBoolDemo VALUES(1); mysql> INSERT INTO AddBoolDemo VALUES(0);
ผลลัพธ์
mysql> SELECT * FROM AddBoolDemo;
+----------+ | isToggle | +----------+ | 1 | | 0 | | 1 | | 0 | +----------+ 4 rows in set (0.00 sec)
การใช้งานใน PHP/Application:
- PHP:
true→ 1,false→ 0 - Query:
WHERE is_active = 1หรือWHERE is_active = TRUE - Index: สร้าง index บน boolean column ได้ปกติ
คำแนะนำ: ใช้ TINYINT(1) โดยตรงเพื่อความชัดเจน หรือ BOOLEAN เพื่อความอ่านง่าย ทั้งคู่เทียบเท่ากันสมบูรณ์