mysql enum使用

该篇博客展示了如何在MySQL中创建一个包含枚举类型的表,并进行插入、查询及算术运算操作。通过示例,详细解释了枚举类型在数据库中的应用。
mysql> create table enum_test (e enum('a','b','c'));
Query OK, 0 rows affected (0.49 sec)

mysql> insert into enum_test (e) values('a'),('b'),('c');
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from enum_test;
+------+
| e    |
+------+
| a    |
| b    |
| c    |
+------+
3 rows in set (0.00 sec)

mysql> select e from enum_test;
+------+
| e    |
+------+
| a    |
| b    |
| c    |
+------+
3 rows in set (0.00 sec)

mysql> select e+1 from enum_test;
+------+
| e+1  |
+------+
|    2 |
|    3 |
|    4 |
+------+
3 rows in set (0.00 sec)

mysql> 

### 如何在 MySQL 中定义和使用 ENUM 数据类型 #### 定义 ENUM 类型 ENUM 是一种特殊的字符串对象,在创建表时可以通过 `CREATE TABLE` 语句来定义。此数据类型的列允许从预定义的值列表中选择一个值[^1]。 ```sql CREATE TABLE shirts ( name VARCHAR(40), size ENUM('x-small', 'small', 'medium', 'large', 'x-large') ); ``` 上述 SQL 创建了一个名为 `shirts` 的表格,其中包含两列:`name` 和 `size`。`size` 列被设置为 ENUM 类型,具有五个可选值。 #### 插入数据到 ENUM 字段 向含有 ENUM 类型字段的表插入记录时,只需提供相应的枚举成员名称即可: ```sql INSERT INTO shirts (name, size) VALUES ('Blue Shirt', 'large'); ``` 如果尝试插入不在预定义集合内的值,则会触发错误或将其转换为空白串(取决于服务器配置)。当 ENUM 列声明为 NOT NULL 并且未指定默认值时,默认情况下第一个枚举常量将成为该列的新行的默认值;而如果没有标记为 NOT NULL ,则 NULL 将作为默认值[^4]。 #### 查询 ENUM 值 查询带有 ENUM 列的数据与处理常规字符数据相同。例如,要获取状态等于 `'pending'` 的所有请求项: ```sql SELECT * FROM plm_change_request WHERE status = 'pending'; ``` 这将返回所有符合条件的结果集,即使 `status` 实际上是一个 ENUM 类型[^2]。 #### 枚举内部存储机制 值得注意的是,尽管 ENUM 表现得像文本形式,但在数据库内部是以非常紧凑的方式保存这些值——即通过索引来表示每个可能的选择。这意味着虽然看起来是在操作字符串,但实际上效率更高,因为只需要比较整数而不是完整的字符串内容。 #### 使用注意事项 建议不要用 ENUM 来储存数字,除非确实有必要这样做,并且可以在应用程序逻辑层面控制好输入范围。在这种情形下,应该考虑采用 INT 类型配合编程语言里的枚举实现更为合理的设计方案[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值