在MySQL数据库中存储枚举

use*_*647 6 java mysql enums database-design

对于我的案例,我需要最干净,最有效的解决方案.我正在尝试将学生的Marks存储在MySQL DB中.学生可能是"缺席"或"复制案例",我想在DB中存储此类信息.

我想为上面的情况分配代码,例如-1为ABSENT,-2为COPY CASE等.这些代码将仅存储在Marks列中.

以往更多,而与选择查询读取它们,我应该得到它们的显示值,即ABSENT,COPY CASE等只.

所有这些只能在DB端实现吗?

或者我是否只需要在应用程序级别实现这些功能?

是否有可用于Java的API用于此类功能?

ste*_*tew 6

mysql支持枚举:

CREATE TABLE students (name varchar(64), mark ENUM('ABSENT','COPY CASE' ));
INSERT INTO students VALUES ('john', 'COPY CASE');
Run Code Online (Sandbox Code Playgroud)

在java中,您可以将此列视为字符串类型列,但在数据库中,值会有效存储,并且尝试存储未包含在枚举中的值将导致错误.


Jig*_*shi 4

如何将其name()(字符串版本)存储到数据库并在使用从数据库读取时将其创建回来valueOf()