mysql中set和enum使用(简单介绍)

简单介绍

SET类型

  在创建表时,就指定SET类型的取值范围。

属性名 SET('值1','值2','值3'...,'值n')

  其中,“属性名”参数指字段的名称;“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是有64个元素构成的组合,根据成员的不同,存储上也有所不同:

  1~8成员的集合,占1个字节。
  9~16成员的集合,占2个字节。
  17~24成员的集合,占3个字节。
  25~32成员的集合,占4个字节。
  33~64成员的集合,占8个字节。

  同ENUM类型一样,列表中的每个值都有一个顺序排列的编号。MySQL中存入的是这个编号,而不是列表中的值。插入记录时,SET字段中的元素顺序无关紧要。存入MySQL数据库后,数据库系统会自动按照定义时的顺序显示。如果插入的成员中有重复,则只存储一次。

比如:

drop table if EXISTS test2;
create table test2(user varchar(30),sex SET('male','female')
)ENGINE=INNODB;
insert into test2 select 'haha1','male';
insert into test2 select 'haha2','female';
insert into test2 select 'haha3','nofemal';

  最后一行会报错

  原因也是因为’nofemal’不是他们其中的’male’和’female’不是其中的任何一个

ENUM类型

  ENUM类型的值范围需要在创建表时通过枚举方式显式指定,对1~255个成员的枚举需要1个字节存储;对于256~65535个成员,需要2个字节存储。最多可以有65535个成员,而SET类型最多只能包含64个成员。两者的取值只能在成员列表中选取。ENUM类型只能从成员中选择一个,而SET类型可以选择多个。因此,对于多个值中选取一个的,可以选择ENUM类型。例如,“性别”字段就可以定义成ENUM类型,因为只能在“男”和“女”中选其中一个。对于可以选取多个值的字段,可以选择SET类型。例如,“爱好”字段就可以选择SET类型,因为可能有多种爱好。

属性名 ENUM('值1','值2','值3'...'值n')

drop table if EXISTS test;
create table test(user varchar(30),sex enum('male','female')
)ENGINE=INNODB;insert into test select 'haha1','male';
insert into test select 'haha2','female';
insert into test select 'haha3','nofemal';

注意:

ENUM和SET类型都是集合类型,不同的是ENUM类型最多可枚举65535个元素,而SET类型最多枚举64个元素。且set中可以存set枚举中的组合,比如执行

insert into test2 select ‘haha4’,’ 'male', 'female'’;

  这样也是成功的

详细:https://blog.csdn.net/kxjrzyk/article/details/51731899

posted @ 2018-09-07 00:14 韦邦杠 阅读(...) 评论(...) 编辑 收藏

mysql中set和enum使用(简单介绍)相关推荐

  1. mysql中decimal类型的使用,MySQL中decimal类型用法的简单介绍

    MySQL中支持浮点数的类型有FLOAT.DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的.DECIMAL 可能的最大取值范围与D ...

  2. mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)

    本篇文章给大家带来的内容是关于mysql中库和表的简单操作总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一. 库的操作 1.创建数据库 创建数据库: create d ...

  3. linux的swap与memory,【Linux】Linux中Swap与Memory内存简单介绍

    背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...

  4. MySQL中的几类日志文件介绍

    MySQL中的几类日志文件介绍 关于Mysql日志 splunk内置了两种mysql的日志,分别是mysqld以及mysql_error mysqld_error Standard mysql err ...

  5. C#中File和FileStream的简单介绍和用法

    前言 在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识.下面就对我所学习的File类和FileStream进行简单的总结. 1.首先先介绍File类和FileStream文件流 1.1 ...

  6. mysql decimal 类型_MySQL中decimal类型用法的简单介绍

    MySQL中支持浮点数的类型有FLOAT.DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的.DECIMAL 可能的最大取值范围与D ...

  7. Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  8. Python中的yield生成器的简单介绍

    Python yield 使用浅析(整理自:廖 雪峰, 软件工程师, HP 2012 年 11 月 22 日 ) 初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关 ...

  9. java synchronized静态_Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  10. 简述python中的几种数据类型,简单介绍Python中的几种数据类型

    简单介绍Python中的几种数据类型 python 里面分为 基本数据类型 和 复合数据类型 基本数据类型包括:数值 字符串 布尔 和 none 复合数据类型包括:列表 元组 字典 和集合怎么算是深情 ...

最新文章

  1. ios查看帧率的软件_程序员必看!直播软件开发弱网下保障高清流畅推流的方法...
  2. FileUpload控件学习
  3. java list集合增删改_Java中集合类list的增删改查
  4. 前端学习(3055):vue+element今日头条管理-反馈
  5. flink运行原理_Flink运行架构剖析
  6. 逻辑回归、线性回归直观感受
  7. 各种排序算法比较--2015年7月23日22:33:43v1.0版
  8. 免费的位图字体制作工具Bitmap Font Generator使用教程
  9. python3 ftplib_python3从零学习-5.10.9、ftplib—FTP 协议客户端
  10. Tensor A must be from the same graph as Tensor B
  11. 七大热门小程序框架横评,谁是性能之王
  12. 深度学习基础学习-残差
  13. linux 查看策略路由,Linux下的策略路由。
  14. You should consider either expiring and/or testing connection validity before use in your applicat
  15. CASIE: Extracting Cybersecurity Event Information from Text阅读总结
  16. 在Solaris下自动启动oracle|Sybase
  17. IEEE-754标准
  18. 重装系统后开机黑屏显示cannot load file怎么办
  19. 数据治理服务及数据治理应用解决方案
  20. windows 如何批量修改文件名称-使用ren命令

热门文章

  1. python中PIL.Image,OpenCV,Numpy图像格式相互转换
  2. UFLDL教程 -- 译文版
  3. vs:严重性代码说明项目文件行错误LNK1168无法打开testes.exe进行写入
  4. 2021-08-21 初识javabean
  5. python验证身份证最后一位数字代表什么_身份证尾数带X的人,是有什么特殊身份吗?看完涨知识了...
  6. java中aop和aoc的区别_你喝到的波尔多AOC、AOP红酒是真的吗?
  7. C++ std::condition_variable notify_one()与notify_all()的作用
  8. js百度地图小车html,百度地图web开发(基于javascript)
  9. 开发板Linux内核,芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)
  10. lol游戏挂机软件_“本不想挂机,但系统不让重连!”LOL成“挂机联盟”,5局3挂机...