MySQL ENUM Data Type
MySQL รองรับ ENUM โดยตรง จำกัดค่าที่รับได้ในคอลัมน์
รูปแบบใน MySQL
CREATE TABLE yourTableName (
yourColumnName ENUM('Value1','Value2','Value3',...) DEFAULT 'Value1'
);
ตัวอย่าง MySQL
mysql> CREATE TABLE EnumInMySQL (
-> WebCRUD ENUM('CREATE','READ','UPDATE','DELETE')
-> DEFAULT 'CREATE'
-> );
Query OK, 0 rows affected (0.60 sec)
SQL Server: ไม่มี ENUM ตรงๆ ใช้ CHECK Constraint แทน
SQL Server ไม่มี ENUM type ใช้ VARCHAR + CHECK CONSTRAINT แทน
รูปแบบใน SQL Server
CREATE TABLE yourTableName (
yourColumnName VARCHAR(100)
CHECK (yourColumnName IN ('Value1','Value2','Value3',...))
DEFAULT 'Value1'
);
ตัวอย่าง SQL Server

การเปรียบเทียบ:
| คุณสมบัติ | MySQL ENUM | SQL Server CHECK |
|---|---|---|
| จัดเก็บข้อมูล | เก็บเป็นตัวเลข index (1 byte) | เก็บสตริงเต็มรูปแบบ |
| ประสิทธิภาพ | เร็วกว่า ประหยัดพื้นที่ | ช้ากว่า ใช้พื้นที่มากกว่า |
| ความยืดหยุ่น | ต้อง ALTER TABLE เพื่อเพิ่มค่า | แก้ CHECK constraint ได้ง่ายกว่า |
| Portability | MySQL only | Standard SQL รองรับทุก DB |
คำแนะนำ: สำหรับระบบที่ต้องการ portability ระหว่าง DB ให้ใช้ CHECK constraint หรือแยกเป็น Lookup table (Foreign Key) แทน