MySQL 支持enum类型,实际存储得是tinyint。可读性和效率兼具。
针对你的情况我举个例子:
首先看mysql这边的设置
CREATE TABLE t_order (
order_id int,
products varchar(64),
status ENUM('canceled', 'finished', 'delivering')
);
insert into t_order(order_id, products, status)
values (1, "笔记本电脑", "canceled"), (2, "华为手机", "finished"), (3, "小米手环", "delivering");
mysql> select * from t_order;
+----------+-----------------+------------+
| order_id | products | status |
+----------+-----------------+------------+
| 1 | 笔记本电脑 | canceled |
| 2 | 华为手机 | finished |
| 3 | 小米手环 | delivering |
+----------+-----------------+------------+
3 rows in set (0.00 sec)
程序端只要按字符串访问就可以。ORM对枚举也有很好的支持,以java+jpa为例子。
public enum OrderStatus { canceled, finished, delivering };
@Enumerated(EnumType.STRING)
private OrderStatus status;