可以使用以下影响允许值的属性来定义MySQL ENUM类型-
NOT NULL- 在ENUM类型中,默认情况下允许NULL值。要禁止NULL值,我们需要在描述ENUM列时使用NOT NULL属性。
NULL -NULL属性是DEFAULT NULL的同义词。NULL的索引值为NULL。
DEFAULT -DEFAULT属性使ENUM数据类型在未指定值时具有默认值。换句话说,我们可以说INSERT语句不必为此字段包含值,因为如果不包含该字段,则将插入DEFAULT之后的值。DEFAULT表达式中不允许使用函数。对于ENUM数据类型,DEFAULT值包括NULL和空字符串('')。
下面的示例将展示如何将这些属性与ENUM数据类型一起使用。
mysql> SET SESSION sql_mode = ''; mysql> Create Table enumtesting(e_value ENUM('a','1')NOT NULL DEFAULT '1',id TINYINT NOT NULL); mysql>Insert into enumtesting(e_value,id)values('1','1'),('',2),(NULL,3),('abc',4); 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); 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)