MySQL ENUM 数据类型有哪些不同的属性?

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 = ''; 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)登录后复制