ประเภท MySQL ENUM สามารถกำหนดได้ด้วยแอตทริบิวต์ต่อไปนี้ซึ่งส่งผลต่อค่าที่อนุญาต -
- ไม่เป็นโมฆะ - ในประเภท ENUM โดยค่าเริ่มต้น ค่า NULL จะได้รับอนุญาต ในการไม่อนุญาตค่า NULL เราจำเป็นต้องใช้แอตทริบิวต์ NOT NULL ในขณะที่อธิบายคอลัมน์ ENUM
- NULL − แอตทริบิวต์ NULL เป็นคำพ้องความหมายสำหรับ DEFAULT NULL ค่าดัชนีสำหรับ NULL คือ NULL
- ค่าเริ่มต้น − แอตทริบิวต์ DEFAULT ทำให้ชนิดข้อมูล ENUM มีค่าเริ่มต้นเมื่อไม่ได้ระบุค่า กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าคำสั่ง INSERT ไม่จำเป็นต้องใส่ค่าสำหรับฟิลด์นี้ เพราะถ้าไม่ได้รวมไว้ ค่าที่อยู่หลัง DEFAULT จะถูกแทรก ไม่อนุญาตให้ใช้ฟังก์ชันในนิพจน์ DEFAULT สำหรับประเภทข้อมูล ENUM ค่าเริ่มต้นจะรวมค่า NULL และสตริงว่าง (‘’)
ตัวอย่าง
ตัวอย่างต่อไปนี้จะแสดงการใช้แอตทริบิวต์เหล่านี้กับประเภทข้อมูล ENUM
mysql> SET SESSION sql_mode = ''; Query OK, 0 rows affected (0.00 sec) mysql> Create Table enumtesting(e_value ENUM('a','1')NOT NULL DEFAULT '1',id TINYINT NOT NULL); Query OK, 0 rows affected (0.23 sec) mysql>Insert into enumtesting(e_value,id)values('1','1'),('',2),(NULL,3),('abc',4); Query OK, 4 rows affected, 3 warnings (0.09 sec) Records: 4 Duplicates: 0 Warnings: 3 mysql> show warnings; +---------+------+----------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------+ | Warning | 1265 | Data truncated for column 'e_value' at row 2 | | Warning | 1048 | Column 'e_value' cannot be null | | Warning | 1265 | Data truncated for column 'e_value' at row 4 | +---------+------+----------------------------------------------------+ 3 rows in set (0.00 sec) mysql> Select * from enumtesting; +----+---------+ | e_value | id | +---------+----+ | 1 | 1 | | | 2 | | | 3 | | | 4 | +---------+----+ 4 rows in set (0.00 sec) mysql> insert into enumtesting(id) values(5); Query OK, 1 row affected (0.11 sec) mysql> Select * from enumtesting; +---------+----+ | e_value | id | +---------+----+ | 1 | 1 | | | 2 | | | 3 | | | 4 | | 1 | 5 | +---------+----+ 5 rows in set (0.00 sec) mysql> select e_value, e_value+0 AS enum_index, id from enumtetsing; +---------+------------+----+ | e_value | enum_index | id | +---------+------------+----+ | 1 | 2 | 1| | | 0 | 2| | | 0 | 3| | | 0 | 4| | 1 | 2 | 5| +---------+------------+----+ 5 rows in set (0.00 sec)