mysql中枚举类型之enum详解(枚举类型在mysql怎么用)

2025-11-15 09:00:02 0

mysql中枚举类型之enum详解(枚举类型在mysql怎么用)

其实mysql中枚举类型之enum详解的问题并不复杂,但是又很多的朋友都不太了解枚举类型在mysql怎么用,因此呢,今天小编就来为大家分享mysql中枚举类型之enum详解的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

枚举类型在mysql怎么用

相关学习推荐:mysql教程
枚举类型在mysql的使用方法:
枚举:enum,实现将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。
枚举的使用方式
定义:enum(可能出现的元素列表);
如enum(‘男’,‘女’)
使用:存储数据,只能存储上面定义好的数据
意义在于:
1, 限定值的可能性!
2, 速度快,比普通的字符串速度快!
原因是枚举型 是利用 整数进行管理的,能够2个字节进行管理!
每个值,都是一个整数标识,从第一个选项开始为1,逐一递增!
管理时整数的形式,速度比字符串快!
一共有2 个字节,0-65535,因此可以有 65535个选项可以使用!、
创建枚举表
create table my_enum(
gender enum(’男’,’女’,’保密’)
)charset utf8;作用之一:规范数据格式,数据只能是规定的数据中的其中一个
作用之二:节省存储空间(枚举通常有一个别名:单选框),枚举实际存储的是数值,而不是字符串本身
在mysql中,系统也是自动转换格式的,而且基本与PHP一样(尤其是字符串转数字)
插入数据
-- 有效数据
insert into my_enum values(’男’),(’保密’);-- 数值插入枚举元素
insert into my_enum values (1),(2);原理在下面
错误数据
insert into my_enum values(’male’); -- 错误:没有该元素证明字段存储的数据是数值:将数据去除了 +0 就可以判断出原来的数据存储的到底是字符串还是数值,如果是字符串最终结果永远是0,否则是其他值
-- 将字段结果取出来进行+0运算
select gender + 0,gender from my_enum;找出了枚举元素的实际规律:按照元素出现的顺序,从1开始编号
枚举原理:枚举在进行数据规范的时候(定义的时候),系统会自动建立一个数字与枚举元素的对应关系(关系放到日志中);然后在进行数据插入的时候,系统自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统就自动将数字转换成字符串显示。
因为我枚举实际存储的是数值,所以可以直接插入数值
想了解更多编程学习,敬请关注php培训栏目!

可以说一下MYSQL中Enum字段的作用和具体用法吗

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

  • 用户在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 的《枚举值》可以是任意字符(除了=和换行符)

使用Enum定义枚举类型

如下:

定义public enum UseType{

}

后面应该有个分号。

static final通常跟的是一个int类型的常数,所以有时候可以用int型代替枚举。在有些时候需要输出这个枚举量的名字(比如January),上面的方法输出的是int值,用类的话可以把名字一起输出。总的来说前者消耗资源比较少,后者更符合枚举的定义。

介绍

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

说明enum和set类型的区别

enum和set类型的区别为:重复对象不同、参数值性质不同、赋予变量不同。

一、重复对象不同

1、enum类型:enum类型允许重复对象,而且其中的对象可以按特定的方式排序。

2、set类型:set类型不允许重复对象,而且其中的对象不按特定的方式排序。

二、参数值性质不同

1、enum类型:enum类型的参数值是常量,不是变量。

2、set类型:set类型的参数值是变量。

三、赋予变量不同

1、enum类型:enum类型只能把参数值赋予枚举变量,不能把元素的数值直接赋予枚举变量。

2、set类型:set类型可以把元素的数值直接赋予函数变量。

这个枚举类型我该怎么理解

C/C++中枚举类型(enum)
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。
举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔合中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!
enum box{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。
在这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!
enum box{pencil,pen};
enum box box2;//或者简写成box box2;
再有一种就是在声明的时候同时定义。
enum {pencil,pen}box,box2; //在声明的同时进行定义!
枚举变量中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,(pencil=1;)这样的写发是错误的,但是你可以在声明的时候进行赋值操作!
enum box{pencil=1,pen=2};
但是这里要特别注意的一点是,如果你不进行元素赋值操作那么元素将会被系统自动从0开始自动递增的进行赋值操作,说到自动赋值,如果你只定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作,例如
enum box{pencil=3,pen};//这里pen就是4系统将自动进行pen=4的定义赋值操作!
C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:
enum FileAccess {
Read = 0x1,
Write = 0x2,
};
FileAccess access = ::Read; // 正确
FileAccess access = FileAccess::Read; // 错误
C++枚举的这个特点对于习惯面向对象和作用域概念的人来说是不可接受的。首先,FileAccess::Read 显然更加符合程序员的直觉,因为上面的枚举定义理应等价于如下的定义(实际上,.NET 中的枚举类型便是如此实现的):
class FileAccess {
static const int Read = 0x1;
static const int Write = 0x2;
};
其次,这导致我们无法在同一个作用域中定义两个同样名称的枚举值。也就是说,以下的代码是编译错误:
enum FileAccess {
Read = 0x1,
Write = 0x2,
};
enum FileShare {
Read = 0x1, // 重定义
Write = 0x2, // 重定义
};
如果这一点没有让你恼怒过的话,你可能还没写过多少 C++ 代码 :-)。实际上,在最新的 C++0x 标准草案中有关于枚举作用域问题的提案,但最终的解决方案会是怎样的就无法未卜先知了,毕竟对于象 C++ 这样使用广泛的语言来说,任何特性的增删和修改都必须十分小心谨慎。
当然,我们可以使用一些迂回的方法来解决这个问题(C++ 总是能给我们很多惊喜和意外)。例如,我们可以把枚举值放在一个结构里,并使用运算符重载来逼近枚举的特性:
struct FileAccess {
enum __Enum {
Read = 0x1,
Write = 0x2
};
__Enum _value; // 枚举值
FileAccess(int value = 0) : _value((__Enum)value) {}
FileAccess& operator=(int value) {
this-》_value = (__Enum)value;
return *this;
}
operator int() const {
return this-》_value;
}
};
我们现在可以按照希望的方式使用这个枚举类型:
FileAccess access = FileAccess::Read;
并且,因为我们提供了到 int 类型的转换运算符,因此在需要 int 的地方都可以使用它,例如 switch 语句:
switch (access) {
case FileAccess::Read:
break;
case FileAccess::Write:
break;
}
当然我们不愿意每次都手工编写这样的结构。通过使用宏,我们可以很容易做到这一点:
#define DECLARE_ENUM(E) \
struct E \
{ \
public: \
E(int value = 0) : _value((__Enum)value) { \
} \
E& operator=(int value) { \
this-》_value = (__Enum)value; \
return *this; \
} \
operator int() const { \
return this-》_value; \
} \
\
enum __Enum {
#define END_ENUM() \
}; \
\
private: \
__Enum _value; \
};
我们现在可以按如下的方式定义前面的枚举,并且不比直接写 enum 复杂多少。
DECLARE_ENUM(FileAccess)
Read = 0x1,
Write = 0x2,
END_ENUM()
DECLARE_ENUM(FileShare)
Read = 0x1,
Write = 0x2,
END_ENUM()
以上转 夜梦晓
其实网上很多资料。不在偷懒。这条路没有捷径!

枚举类型enum代码看不懂,求指点!不知道说的是什么意思enum有何意义

enum变量定义后每个变量默认依次赋值为0,1,2,3。
可以自定义其中的某个变量的值。比如
enum GameResult{WIN,LOSE=2,TIE,CANCEL};则这个enum的值为0,2,3,4
enum GameResult{WIN=5,LOSE,TIE,CANCEL};则这个enum的值为5,6,7,8
enum GameResult{WIN=5,LOSE,TIE=10,CANCEL};则这个enum的值为5,6,10,11

关于mysql中枚举类型之enum详解到此分享完毕,希望能帮助到您。

mysql中枚举类型之enum详解(枚举类型在mysql怎么用)

本文编辑:admin

更多文章:


如何查看电脑的服务器地址?如何免费申请个人网站

如何查看电脑的服务器地址?如何免费申请个人网站

大家好,今天小编来为大家解答以下的问题,关于服务器地址,如何查看电脑的服务器地址这个很多人还不知道,现在让我们一起来看看吧!本文目录如何查看电脑的服务器地址如何免费申请个人网站服务器地址怎么获取《我的世界》国际版有什么好玩的服务器(java

2025年8月14日 09:45

php环境搭建(php的一键安装包有哪些php环境搭建)

php环境搭建(php的一键安装包有哪些php环境搭建)

本篇文章给大家谈谈php环境搭建,以及php的一键安装包有哪些php环境搭建对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录php的一键安装

2025年10月30日 08:30

sql语句优化面试(面试问到 数据库性能优化 怎么回答 我是Oracle数据库)

sql语句优化面试(面试问到 数据库性能优化 怎么回答 我是Oracle数据库)

本篇文章给大家谈谈sql语句优化面试,以及面试问到 数据库性能优化 怎么回答 我是Oracle数据库对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2025年7月30日 02:15

char类型几位(用户类别一般char几)

char类型几位(用户类别一般char几)

这篇文章给大家聊聊关于char类型几位,以及用户类别一般char几对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录用户类别一般char几C语言说char是16位,又说他是1字节(byte)字节和位有啥区别用户类别一般char几

2026年4月10日 03:30

java numberformatexception(java.lang.NumberFormatException: For input string: ““怎么解决)

java numberformatexception(java.lang.NumberFormatException: For input string: ““怎么解决)

大家好,关于java numberformatexception很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java.lang.NumberFormatException: For input string: ““怎么解

2026年8月20日 16:00

图片转换代码软件(求一款图片转网页代码的工具,就是可以把图片转换成网页广告的那种,)

图片转换代码软件(求一款图片转网页代码的工具,就是可以把图片转换成网页广告的那种,)

本篇文章给大家谈谈图片转换代码软件,以及求一款图片转网页代码的工具,就是可以把图片转换成网页广告的那种,对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录求一款图片转网页代码的工具,就是可以把图片转换成网页广告的那种,matht

2025年6月30日 23:30

desense(手机desense测试,中文是什么意思怎么测试)

desense(手机desense测试,中文是什么意思怎么测试)

大家好,关于desense很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于手机desense测试,中文是什么意思怎么测试的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有

2025年11月12日 03:00

如何使用ubuntu系统(win10安装ubuntu双系统怎么装)

如何使用ubuntu系统(win10安装ubuntu双系统怎么装)

各位老铁们,大家好,今天由我来为大家分享如何使用ubuntu系统,以及win10安装ubuntu双系统怎么装的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2025年9月4日 20:00

sql数据库多少钱(access sql 等的数据库,开发工具多少钱运行平台多少钱)

sql数据库多少钱(access sql 等的数据库,开发工具多少钱运行平台多少钱)

其实sql数据库多少钱的问题并不复杂,但是又很多的朋友都不太了解access sql 等的数据库,开发工具多少钱运行平台多少钱,因此呢,今天小编就来为大家分享sql数据库多少钱的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析

2026年1月21日 20:15

php环境搭建的原理(什么是PHPWEB环境的搭建及其作用)

php环境搭建的原理(什么是PHPWEB环境的搭建及其作用)

大家好,如果您还对php环境搭建的原理不太了解,没有关系,今天就由本站为大家分享php环境搭建的原理的知识,包括什么是PHPWEB环境的搭建及其作用的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录什么是PHPWEB

2026年8月23日 16:15

c语言一维数组有几个数(c语言的一维数组中至少要有几个元素)

c语言一维数组有几个数(c语言的一维数组中至少要有几个元素)

大家好,如果您还对c语言一维数组有几个数不太了解,没有关系,今天就由本站为大家分享c语言一维数组有几个数的知识,包括c语言的一维数组中至少要有几个元素的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录c语言的一维数组

2025年11月27日 13:30

1111101100101110转为16进制?将23456表为16进制数

1111101100101110转为16进制?将23456表为16进制数

其实16进制表的问题并不复杂,但是又很多的朋友都不太了解1111101100101110转为16进制,因此呢,今天小编就来为大家分享16进制表的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录11111011001

2025年12月19日 18:30

字符串常量池存的是实例还是引用?(Java中的几种常量池)

字符串常量池存的是实例还是引用?(Java中的几种常量池)

各位老铁们好,相信很多人对字符串常量池存的是实例还是引用?都不是特别的了解,因此呢,今天就来为大家分享下关于字符串常量池存的是实例还是引用?以及Java中的几种常量池的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2025年6月30日 14:15

手机文件编辑器(手机电子版文件怎么编辑)

手机文件编辑器(手机电子版文件怎么编辑)

大家好,关于手机文件编辑器很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于手机电子版文件怎么编辑的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录手机电子

2026年8月29日 05:00

指针变量为什么占4个地址(C语言中,为什么指针变量无论指向那个类型的变量,其所占的字节都为4个字节详解)

指针变量为什么占4个地址(C语言中,为什么指针变量无论指向那个类型的变量,其所占的字节都为4个字节详解)

今天给各位分享C语言中,为什么指针变量无论指向那个类型的变量,其所占的字节都为4个字节详解的知识,其中也会对C语言中,为什么指针变量无论指向那个类型的变量,其所占的字节都为4个字节详解进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站

2025年7月27日 19:00

html5模板 支付成功(html5怎么实现支付宝实时转账)

html5模板 支付成功(html5怎么实现支付宝实时转账)

大家好,html5模板 支付成功相信很多的网友都不是很明白,包括html5怎么实现支付宝实时转账也是一样,不过没有关系,接下来就来为大家分享关于html5模板 支付成功和html5怎么实现支付宝实时转账的一些知识点,大家可以关注收藏,免得下

2025年7月5日 15:45

csdn下载资源多(求CSDN下载资源)

csdn下载资源多(求CSDN下载资源)

大家好,今天小编来为大家解答以下的问题,关于csdn下载资源多,求CSDN下载资源这个很多人还不知道,现在让我们一起来看看吧!本文目录求CSDN下载资源csdn下载次数用不完csdn资源怎么样求CSDN下载资源import java.io.

2026年7月12日 02:45

js jquery面试(jquery中怎么调用js方法调用)

js jquery面试(jquery中怎么调用js方法调用)

这篇文章给大家聊聊关于js jquery面试,以及jquery中怎么调用js方法调用对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录jquery中怎么调用js方法调用js与Jquery的区别是什么请问会html,div+css

2025年8月8日 03:45

grab过去时(grab怎么读)

grab过去时(grab怎么读)

大家好,今天小编来为大家解答以下的问题,关于grab过去时,grab怎么读这个很多人还不知道,现在让我们一起来看看吧!本文目录grab怎么读grab是什么意思grab的过去式和现在分词grab, catch, snatch的区别是什么gra

2026年5月11日 16:00

命名空间上可以使用部分访问修饰符(protected System.Web.UI.WebControls.TextBox TextBox1;这是什么意思)

命名空间上可以使用部分访问修饰符(protected System.Web.UI.WebControls.TextBox TextBox1;这是什么意思)

各位老铁们好,相信很多人对命名空间上可以使用部分访问修饰符都不是特别的了解,因此呢,今天就来为大家分享下关于命名空间上可以使用部分访问修饰符以及protected System.Web.UI.WebControls.TextBox Text

2026年2月26日 23:30

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索