sql enum类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql enum类型相关的知识,希望对你有一定的参考价值。

……
`sex` enum('男','女') NOT NULL default '男'
……
别人的代码(局部)
这是什么意思?

enum 是枚举类型, sex 性别字段 加约束条件,默认是 ‘男’,插入数据时,sex字段只可以是'男'或'女',另外,mysql 不支持check的,虽然语法上不会报错是,分析建表语句的时候会被忽略.

参考技术A 我对MYSQL不是很了解,不过看样子应该是创建表的语句sex应该是字段名,enum(男女)应该表示字段限定的值只能是男和女,NOT NULL是不为空的意思,default 是返回的意思,结合起来应该是 字段名SEX 限定内容 男和女,字段值不能为空,默认是男的意思。当然以上是我根据大部分编程来猜的。。 参考技术B

根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。

    用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表

    在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号

    与MyCat的类似分片算法对比

    中间件

    DBLE

    MyCat

    分片算法种类    enum 分区算法    分片枚举    

    两种中间件的枚举分片算法使用上无差别。

    开发注意点

    【分片索引】1. 整型数字(可以为负数)或字符串((不含=和换行符)

    【分片索引】2. 枚举值之间不能重复

    Male=0Male=1

    或者

    123=1123=2

    会导致分片策略加载出错

    【分片索引】3. 不同枚举值可以映射到同一个分片上

    Mr=0Mrs=1Miss=1Ms=1123=0

    运维注意点

    【扩容】1. 增加枚举值无需数据再平衡

    【扩容】2. 增加一个枚举值的分片数量数时,需要对局部数据进行迁移

    【缩容】1. 减少枚举值需要数据再平衡

    【缩容】2. 减少一个枚举值的分片数量数时,需要对局部数据进行迁移

    配置注意点

    【配置项】1. 在 rule.xml 中,可配置项为 <property name="defaultNode"> 、<property name="mapFile"> 和 <property name="type"> 

    【配置项】2. 在 rule.xml 中配置 <property name="defaultNode"> 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会报错;若需要配置,必须为非负整数,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会路由至这个值的 MySQL 分片

    【配置项】3. 在 rule.xml 中配置 <property name="mapFile"> 标签,范围映射文件的路径:若在映射文件在 DBLE_HOME/conf 或其中,则可以使用相对路径的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 时,配置值就可以简写为 map/table_map.txt;映射文件在 DBLE_HOME/conf 目录以外时,需要使用绝对路径,但这种做法需要考虑用户权限等问题,因此不建议把映射文件放在 DBLE_HOME/conf 外。

    【配置项】4. 编辑 mapFile 所配置的文件

    记录格式为:<枚举值>=<分片编号>

    枚举值可以是整型数字,或任意字符(除了=和换行符),分片编号必须是非负整型数字,记录之间以换行分隔,一行仅能有一条记录,枚举值不能够是“DEFAULT_NODE”这个字符串,允许以“//”和“#”在行首来注释该行

    【配置项】5. 在 rule.xml 中配置 <property name="type"> 标签;type 必须为整型;取值为 0 时,mapFile 的<枚举值>必须为整型;取值为非 0 时,mapFile 的<枚举值>可以是任意字符(除了=和换行符)

sql 使用'enum'数据类型列查找表

SELECT TABLE_NAME  FROM information_schema.columns WHERE table_schema = 'count137_magento2' and DATA_TYPE = 'enum'


以上是关于sql enum类型的主要内容,如果未能解决你的问题,请参考以下文章

sql ENUM()字符串类型

sql 使用'enum'数据类型列查找表

mysql怎么获取数据表字段enum类型的默认值

Openstack数据库管理工具alembic更新Enum类型

如何将mysql中枚举类型的数值在前台遍历为汉字

枚举类型 typedef enum....; enum....; 这两个的区别