首页
学习
活动
专区
圈层
工具
发布

枚举('是','不')vs tinyint - 使用哪一个?

枚举('是','不')和tinyint都是常用的数据类型,用于表示布尔值或者二进制状态。它们在不同的场景下有不同的使用优势。

枚举('是','不')是一种枚举类型,用于表示有限的离散取值。它可以提供更直观的语义,使得代码更易读和理解。在某些情况下,使用枚举('是','不')可以使代码更加简洁,减少了对数字的硬编码。例如,在表示用户的状态时,可以使用枚举('是','不')来表示用户的激活状态。

在数据库中,使用tinyint作为布尔类型的表示也是常见的做法。tinyint是一种较小的整数类型,只占用1个字节的存储空间。它可以表示0和1两个取值,分别对应于假和真。在某些情况下,使用tinyint可以节省存储空间,并且在进行比较和计算时具有更高的效率。

综上所述,选择使用枚举('是','不')还是tinyint取决于具体的需求和场景。如果需要表示有限的离散取值,并且更注重代码的可读性和语义,可以选择枚举('是','不')。如果需要节省存储空间并且对性能要求较高,可以选择tinyint。

腾讯云提供了丰富的云计算产品和服务,包括云数据库、云服务器、云原生应用引擎等。具体推荐的产品和产品介绍链接地址可以根据实际需求进行选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MyBatis的jdbcType和javaType详解

为了表示这些数据类型,Java源码是采用枚举来定义的: public enum JDBCType implements SQLType { TINYINT(Types.TINYINT),...SMALLINT(Types.SMALLINT), INTEGER(Types.INTEGER) } 枚举变量也是有类型的,也是有值的,正如整数变量是整数类型,也有值大小一样,上述枚举变量值的定义是通过...public class Types { public final static int TINYINT = -6; public final static int...#{updateBy,jdbcType=VARCHAR}, #{updateTime,jdbcType=DATE} ) 这样,保证了前四种是不能为空的前提下...如果createBy为空,插入的时候mybatis不知道具体转换成什么jdbcType类型,通常会使用一个默认设置,虽然默认配置一般情况下不会出错,但是遇到个别情况还是会有问题的。

10.6K10

SqlParameter类中的两对好基友:SqlDbType与DbType、SqlValue与Value

这两对属性光从MSDN上看不出什么区别,在到底选用其中哪个属性时给我造成过困扰,后来冥冥中觉得它们之间可能有关联,遂决定实验一下: 果然,它们之间内部是私通的,赋值其中一个,另一个会跟着改变。...通过反编,发现SqlDbType和DbType是通过一个叫MetaType的类实现的私通(这个类是internal的,所以外部不能访问),而SqlValue和Value则是通过SqlParameter类中的一个私有字段...总之知道这两对基友有联动就行了,以后不用再纠结用哪一个。...(v=vs.80).aspx 关于SqlDbType和DbType的对应关系,可参看此表(但其中SqlDbType其实不是指SqlDbType枚举,但意思是明白的):http://msdn.microsoft.com.../zh-cn/library/system.data.sqltypes(v=vs.80).aspx PS:原来cnblogs的超链是默认原窗口打开,我想骂人

70420
  • 分享一下我是怎么使用枚举的

    分享一下我是怎么使用枚举的 一、介绍 对于java枚举不陌生了,直接上代码 二、代码 使用了一个接口,用来规定一下里面的字段,统一下好处理 package com.banmoon.test.enums;...a.getCode().equals(code)).findFirst().map(EnableStatusEnum::getMsg).orElse(defaultMsg); } } 大家也都知道,枚举这东西对于一批固定的几个状态值进行管理...通常是某张表的一些状态值,如果一张表里面有多个状态值,我们可以这样写一个常量类,里面放置每一个字段的枚举类 package io.yunshuo.dataset.enums; import io.yunshuo.commons.tools.exception.RenException...private final Integer code; private final String msg; } } 三、最后 没什么技术含量的,就是分享一下,我是这样使用枚举的...我觉得挺清晰明了的 我是半月,你我一同共勉!!!

    43640

    MySQL - 高效的设计MySQL库表

    ---- 第二范式 VS 第三范式 第二范式:非主键列是否依赖主键(包括一列通过某一列间接依赖主键),要是有依赖关系就是第二范式; 第三范式:非主键列是否直接依赖主键,不能是那种通过传递关系的依赖...比如:人的年龄用 unsigned tinyint(范围 0~255,人的寿命不会超过 255 岁);海龟就必须是 smallint,但如果是太阳的年龄,就必须是 int;如果是所有恒星的年龄都加起来,...解决方案:使用 TINYINT,在 COMMENT 信息中标明被枚举的含义。...短数据使用 TINYINT 或 SMALLINT,比如:人类年龄,城市代码。 使用 UNSIGNED 存储非负数值,扩大正数的范围。 ---- int(3) int(5) 区别 ?...Char 类型;字符长度不相同的使用 Varchar 类型,不预先分配存储空间,长度不要超过 255。

    3.5K12

    MySQL(三)

    ,L 长度范围是 0 ~ 65535 Text: 文本类型,存储普通字符文本 Tinytext: 系统使用 1 个字节来保存,实际能存储 28 + 1 Text: 系统使用 2 个字节来保存,实际能存储...216 + 2 Mediumtext: 系统使用 3 个字节来保存,实际能存储 224 + 3 Longtext: 系统使用 4 个字节来保存,实际能存储 232 + 4 Enum: 枚举类型,在存入之前...,先预设几个项来限制可输入值,基本语法: enum({枚举值1}, {枚举值2}, …) Set: 将多个数据项同时保存,本质是将指定的项按照对应的二进制位来控制,1 表示被选中,0 表示未被选中,基本语法...: set({值1}, {值2}, …) 注意: 如果数据长度超过 255 个字符,我们一般是使用 text,而不是 char 或 varchar。...枚举类型在 MySQL 中实际存储的整型,注意是从 1 开始。

    76920

    MybatisPlus通用枚举

    一一《古诗十九首》 在项目开发中,经常数据库中的一个字段对应一个枚举 对于这些枚举,我们要使用数据库将他们的值映射起来 MybatisPlus为我们提供了优雅的解决方案 只需要配置中添加枚举处理器...,默认使用ordinalType default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler 然后如果是对于一些简单的枚举...,例如使用ordinal和数据库的值映射的枚举,我们可以直接使用 比如此处UserDetail中使用GenderEnum 在数据库中:0对应女,1对应男 package com.ruben.simplescaffold.enumration...; private final String desc; @EnumValue private final Integer value; } 注意此处对应数据库字段的长度为tinyint...不指定长度,如果指定长度为1,则默认会失效 2.以及实现com.baomidou.mybatisplus.annotation.IEnum接口 package com.ruben.simplescaffold.enumration

    60520

    MySQL数据类型

    数据类型分类 简单看一下数据可常见类型: 数值类型 tinyint类型 创建一个表,表中内容是tinyint型有符号: mysql> create table if not exists t1 (...创建一个表,表中内容是tinyint unsigned型无符号: mysql> create table if not exists t2( -> num tinyint unsigned...在MySQL表中建立属性列:列名称 类型例如:num tinyint unsigned 注意: 尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此...定长的意义是,直接开辟好对应的空间 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少 日期和时间类型 常用的日期有如下三个: date :日期 'yyyy-mm-dd' ,占用三字节 datetime...数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,…最多64个 说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。

    23510

    【MySql】MySql的数据类型

    反过来,我们如果已经有数据被插入到MySql中了,一定是插入的时候是合法的 所以MySql中一般而言,数据类型本身也是一种约束,约束程序员尽可能进行正确的插入,约束使用者,如果你不是一个很好的使用者,...就能保证数据库中的数据是可预期,完整的 MySql表中建立属性列:列名称 类型在后,如num tinyint unsigned; 这是tinyint类型我们所需要注意的,同时,尽量不使用unsigned...定长的意义是,直接开辟好对应的空间 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。...说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。...,只能插入枚举的类型。

    73030

    【MySQL】004.MySQL数据类型

    因为tinyint的数据范围是-128 - 127 创建一个无符号的tinyint类型的表 首先我们创建一个名叫t2的表 create table if not exists t2( num...定长的意义是,直接开辟好对应的空间 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。...说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。...注意:这个下标是从1开始的,表示第一个枚举值,第二个枚举值,有几个枚举值就只能到几。...所以当我们向一个集合当中去插入爱好时,这个数字就代表的是位图,比特位的从低到高依次是爱好的从左向右。比特位的位置代表的是哪一个爱好,比特位为零为一代表的是是否有这个爱好。

    8800

    MySQL2_字符集及数据类型

    1.保存数据的时候需要使用字符集 2.数据传输的时候也需要使用字符集 在存续的时候使用字符集 在MySQL的服务器上,在数据库中,在表的使用上,在字段的设置上...._general_ci 尾缀的都是不区分大小写的 create table t2( str char(1) )charset=utf8mb4 collate=utf8mb4_bin; #看到尾缀边是..._bin的都是区分大小的 #Linux中Mysql是区分大小的 #需要自己去配置 #vim /etc/my.cnf #找到[mysqld] #1是不区分大小写,0是区分大小写 lower_case_table_names...,那么这个数一定是非负数 #0-255 0-2^8-1 tinyint unsigned create table t3( age tinyint unsigned ); (3)显示宽度(zerofill...(enum) 多选一的时候使用的一种数据类型 在前端使用单选框的时候,枚举类型可以发挥作用 create table t6( name varchar(32), sex enum('男','女','

    46220

    【mysql】整数类型

    (4) 表示的是在 tinyint 范围内 -128~127 的符号位是4位(符号+数字位数),所以默认数据的宽度为 4 ,其他同上。...从MySQL 8.0.17开始,整数数据类型不推荐使用显示宽度属性。...,如果不指定,则系统为每一种类型指定默认的宽度值。...适用场景 TINYINT:一般用于枚举数据,比如系统设定取值范围很小且固定的场景。 SMALLINT:可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等。...相反,使用 INT,就能确保有足够大的取值范围,不用担心数据超出范围影响可靠性的问题。 要注意的是,在实际工作中,系统故障产生的成本远远超过增加几个字段存储空间所产生的成本。

    2.2K20

    探秘 MySQL 数据类型的艺术:性能与存储的精妙平衡

    TINYINT 是 MySQL 中的最小整数类型,使用 1 字节(8 位)来存储数值。...CHAR(2) 存储国家代码,因为国家代码始终是两位字符;同时使用 VARCHAR(20) 和 VARCHAR(15) 存储用户名和电话号码,因为这些字段的长度是不固定的。...下面是常见的日期和时间类型的介绍、使用示例及其区别。 5.1 日期和时间类型的定义 5.1.1DATE 定义:DATE 类型用于存储日期,不包含时间部分。...六、枚举和集合类型 在 MySQL 中,枚举(ENUM) 和 集合(SET) 是两种特殊的字符串类型,分别用于表示单个或多个预定义值的选择。它们的使用场景和功能各有不同,适用于有限选项的数据存储。...ENUM 的存储方式是将每个值作为整数索引,存储效率高。 可以有最多 65,535 个枚举值。 6.1.3 使用场景: 适合用于只有一个状态或分类的字段,比如用户的性别、订单状态、商品的颜色等。

    16810

    MySQL数据类型 详细讲解

    8个字节 ---- 从表可知,不同类型整数存储所需的字节数是不同的,占用字节数最小的是TINYINT类型,占用字节最大的是BIGINT类型,相应的占用字节越多的类型所能表示的数值范围越大。...字符串可以进行区分或者不区分大小写的串比较,另外,还可以进行模式匹配查找。MySQL中字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。...,只能有一个枚举字符串值 1或2个字节,取决于枚举值数目(最大值65535) SET 一个设置,字符串对象可以有0个或多个SET成员 1,2,3,4或8个字节,取决于集合成员的数量(最多64个成员)...对于InnoDB存储引擎:使用可变长的数据列,因为InnoDB数据表的存储格式不分固定长度和可变长度,因此使用CHAR不一定比使用VARCHAR更好,但由于VARCHAR是按照实际存的长度存储,比较节省空间...2.5 ENUM和SET     ENUM只能取单值,它的数据列表示一个枚举集合。它的合法值列表最多有65535个成员。因此,在需要从多个值中选取一个时,可以使用ENUM。

    1.9K10

    【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)

    2.1 tiny 类型 以 tinyint 类型为例,其他整数类型的使用方法与此类似。...3.3 char VS vachar 共同点:都能保存字符串,都有上限。 区别:char 是定长的,varchar 是变长的。char 一次分配固定空间,varchar 根据实际使用分配空间。...定长 VS 变长 定长的磁盘空间比较浪费,但是效率高。 变长的磁盘空间比较节省,但是效率低。 定长的意义是,直接开辟好对应的空间 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。 4....说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读 【案例】: 有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),(男,女)[单选]...,而且插入null也报错 设置默认为 null ,可以不插用的是后面带的默认值。

    21900

    mysql学习总结02 — 数据类型

    tinyint(3):表示最长可以显示3位,unsigned说明只能是正数,0~255不会超过三个长度tinyint(4):表示最长可以显示4位,-128~127 zerofill:从左侧开始填充0 (...mysql> alter table sunshine add field2 tinyint zerofill; 显示长度可以自己设定,超出长度(但是不超出范围)不会影响,只会配合zerofill对长度不够的进行补充...'20'+year : '19'+year ) time 本质是用来表示时间区间(xxx个小时),所以可表示范围较大 -838:59:59~838:59:59 time 录入时可使用一个简单的日期(可为负数...text,不再使用char和varchar char的长度L不区分中英文 varchar需要记录数据长度(系统根据数据长度自动分配空间),所以每个varchar数据产生后,系统都会在数据后面增加1-2个字节的额外开销用来保存数据所占用的空间长度...--: | | 男 | | 女 | | 男 | 由于实际enum字段存储的结果是数值,数据插入时可以使用对应的数值 特性:mysql自动进行类型转换,如果数据遇到 " + - *

    1.5K20

    数据库MySQL-数据类型

    '女','保密') # 枚举 -> ); Query OK, 0 rows affected (0.06 sec) -- 插入的枚举值只能是枚举中提供的选项 mysql> insert into...'); ERROR 1265 (01000): Data truncated for column 'sex' at row 1 枚举值是通过整形数字来管理的,第一个值是1,第二个值是2,以此类推,枚举值在数据库存储的是整形数字...答:2字节=16位,216=65536,范围是(0-65535),由于枚举从1开始,所以枚举值最多有65535个 1.2.4 集合(set) 从集合中选择一些值作为数据(多选) mysql> create...1.2.6 练习题 电话号码一般使用什么数据类型存储? varchar 手机号码用什么数据类型 char 性别一般使用什么数据类型存储?...char tinyint enum 年龄信息一般使用什么数据类型存储? tinyint 照片信息一般使用什么数据类型存储?

    2.2K20

    大战SQL列类型及其列属性

    原文如下:和我关系密切的人理解我,不讨厌我,有时甚至喜欢我,而那些与我联系不太密切的人被我的直率冒犯。很明显,我需要加深对别人的理解,别人也需要加深对我的理解。...上次讲到了列类型的枚举类型,那么接下来还有集合记录长度,列属性倒不是特别多,也就有空属性,列描述以及默认值,所以学起来也是超快~ 集合字符串 集合跟枚举实际上很类似,实际上存储的是数值,而不是字符串(集合可以多选...) 集合定义:set 元素列表 使用:使用元素列表中的多个元素,使用逗号分隔 插入数据:使用多个元素字符串组合,也可以直接插入数值 相关语句: -- 创建集合表 create table my_set...所以集合实际上很少用,枚举可能还会用,虽然效率低一些,但能判断元素的确切位置。...如添加tinyint字段后报错: ? 那么怎样才可以呢?

    1.5K30
    领券