sql enum类型
SQL Server没有枚举类型。
可以使用约束限制取值:
列名 VARCHAR(10) NOT NULL CHECK (列名 IN('可选值1', 可选值2', 可选值3))
SQL 中通常是通过外键来实现的。
创建一个status表包含一个status列,其中存储那几个固定的状态。
然后给目前这个表添加外键约束。
ALTER TABLE tablename WITH CHECK ADD CONSTRAINT fk_status FOREIGN KEY([status])
REFERENCES [status] ([status])
enum 是枚举类型, sex 性别字段 加约束条件,默认是 ‘男’,插入数据时,sex字段只可以是'男'或'女',另外,MySQL 不支持check的,虽然语法上不会报错是,分析建表语句的时候会被忽略.
我对MYSQL不是很了解,不过看样子应该是创建表的语句sex应该是字段名,enum(男女)应该表示字段限定的值只能是男和女,NOT NULL是不为空的意思,default 是返回的意思,结合起来应该是 字段名SEX 限定内容 男和女,字段值不能为空,默认是男的意思。当然以上是我根据大部分编程来猜的。。
根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。
用户在rule.xml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表
在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号
- Male=0Male=1
- 123=1123=2
- Mr=0Mrs=1Miss=1Ms=1123=0
与MyCat的类似分片算法对比
中间件
DBLE
MyCat
分片算法种类 enum 分区算法 分片枚举
两种中间件的枚举分片算法使用上无差别。
开发注意点
【分片索引】1. 整型数字(可以为负数)或字符串((不含=和换行符)
【分片索引】2. 枚举值之间不能重复
或者
会导致分片策略加载出错
【分片索引】3. 不同枚举值可以映射到同一个分片上
运维注意点
【扩容】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 的<枚举值>可以是任意字符(除了=和换行符)
塞贝过氧: 1enum 是枚举类型, sex 性别字段 加约束条件,默认是 '男',插入数据时,sex字段只可以是'男'或'女',另外,MySQL 不支持check的,虽然语法上不会报错是,分析建表语句的时候会被忽略.
抚顺市15975759221: 数据库中的布尔类型声明形式 - ?
塞贝过氧: SQL里面时用BOOL型,enum时枚举型,不是所有的数据库都支持的.对就是这样写,不过我说了,不是所有的数据库都支持的,比如MySQL不支持.
抚顺市15975759221: MySQL中的enum类型有什么优点 - ?
塞贝过氧: 例如下面两个字段:name varchar(50) , sex enum('male' , 'female' , 'both' , 'unknow') name 字段可以插入任意字符串.sex 字段只允许插入 male , female , both , unknow 中的其中之一,不在范围内的值会报错.enum 相比较 varchar 就更加规范些,你在程序中限定也一样可以做到.
抚顺市15975759221: 如何使用sql语句修改字段类型为enum里的选项内容 - ?
塞贝过氧: 表名:test ,字段名:enm, 语句:alter table test modify column enm enum('a','b','c','d');
抚顺市15975759221: mysql enum类型int类型哪个检索快麻烦告诉我 - ?
塞贝过氧: ENUM是一个枚举类型,非常类适于Pascal语言的枚举类型,它允许程序员看到类似于'red、'green'、'blue'的字段值,而MySQL只将这些值存储为一个字节.
抚顺市15975759221: mysql里面的ENUM函数 - ?
塞贝过氧: enum是计算机编程语言中的一种数据类型.枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内.例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等.如果把这些量说明为整型,字符型或其它类型...
抚顺市15975759221: mysql数据库性能测试 - ?
塞贝过氧: 我理解的是你希望了解mysql性能测试的方法: 其实常用的一般: 选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的...
抚顺市15975759221: mysql中总用enum类型是不是不太好啊? - ?
塞贝过氧: ENUM 类型对于发询问题不年夜,最年夜的就是后期若是增添了一个类型,必需加到最后.
抚顺市15975759221: sql server中枚举类型enum和触发器怎么用 - ?
塞贝过氧: sql server中有enum吗? 触发器是当数据库中的表在添改删时产生的事件,你可以对修改的数据时行处理,如:同时改写其他表的值或其他.
抚顺市15975759221: mysql的优化方法 - ?
塞贝过氧: MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小.例如,在定义邮政编码这个字段时,如果将...