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

ชนิดข้อมูลสำหรับ Flag ใน MySQL

ชนิดข้อมูลที่เหมาะสมสำหรับ Flag (True/False) ใน MySQL

ชนิดข้อมูลที่แนะนำสำหรับคอลัมน์ Flag คือ TINYINT(1) ซึ่งใช้พื้นที่เพียง 1 ไบต์ และสามารถเก็บค่า 0 (False) และ 1 (True) ได้อย่างมีประสิทธิภาพ

yourColumnName TINYINT(1) DEFAULT 1;

ตัวอย่างการใช้งาน

สร้างตารางมีคอลัมน์ isMarried เป็น Flag:

mysql> create table DemoTable (
    ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName varchar(20),
    isMarried tinyint(1) DEFAULT 1
);

เพิ่มข้อมูล (ไม่ระบุ isMarried จะใช้ค่า DEFAULT 1):

mysql> INSERT INTO DemoTable(ClientName,isMarried) values('Larry',0);
mysql> INSERT INTO DemoTable(ClientName) values('David');
mysql> INSERT INTO DemoTable(ClientName,isMarried) values('Mike',1);
mysql> INSERT INTO DemoTable(ClientName) values('Carol');

ผลลัพธ์:

+----------+------------+-----------+
| ClientId | ClientName | isMarried |
+----------+------------+-----------+
| 1        | Larry      | 0         |
| 2        | David      | 1         |
| 3        | Mike       | 1         |
| 4        | Carol      | 1         |
+----------+------------+-----------+

ตัวเลือกอื่นๆ:

  • BOOLEAN / BOOL - เป็น Alias ของ TINYINT(1) ใช้ได้เหมือนกัน อ่านโค้ดง่ายขึ้น
  • BIT(1) - ใช้พื้นที่ 1 บิต แต่การแสดงผลและการ Query ซับซ้อนกว่า (ต้องใช้ +0 หรือ CAST)
  • ENUM('0','1') - จำกัดค่าได้ชัดเจน แต่ใช้พื้นที่มากกว่า และเป็น String ไม่ใช่ Number

แนะนำ: ใช้ TINYINT(1) หรือ BOOLEAN พร้อม DEFAULT 0 หรือ DEFAULT 1 ตาม Logic ของระบบ