mysql中set和enum使用(简单介绍)
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
mysql中set和enum使用(简单介绍)相关推荐
- mysql中decimal类型的使用,MySQL中decimal类型用法的简单介绍
MySQL中支持浮点数的类型有FLOAT.DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的.DECIMAL 可能的最大取值范围与D ...
- mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)
本篇文章给大家带来的内容是关于mysql中库和表的简单操作总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一. 库的操作 1.创建数据库 创建数据库: create d ...
- linux的swap与memory,【Linux】Linux中Swap与Memory内存简单介绍
背景介绍 对于Linux来说,其在服务器市场的使用已经占据了绝对的霸主地位,不可动摇.Linux的各种设计思想和使用也被传承(当然不乏各种黑Linux,而且黑的漂亮).Linux的很多独特的设计,对性 ...
- MySQL中的几类日志文件介绍
MySQL中的几类日志文件介绍 关于Mysql日志 splunk内置了两种mysql的日志,分别是mysqld以及mysql_error mysqld_error Standard mysql err ...
- C#中File和FileStream的简单介绍和用法
前言 在近期的工作过程中发现自己的基础比较薄弱,所以最近在恶补基础知识.下面就对我所学习的File类和FileStream进行简单的总结. 1.首先先介绍File类和FileStream文件流 1.1 ...
- mysql decimal 类型_MySQL中decimal类型用法的简单介绍
MySQL中支持浮点数的类型有FLOAT.DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的.DECIMAL 可能的最大取值范围与D ...
- Java中Synchronized的用法(简单介绍)
简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...
- Python中的yield生成器的简单介绍
Python yield 使用浅析(整理自:廖 雪峰, 软件工程师, HP 2012 年 11 月 22 日 ) 初学 Python 的开发者经常会发现很多 Python 函数中用到了 yield 关 ...
- java synchronized静态_Java中Synchronized的用法(简单介绍)
简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...
- 简述python中的几种数据类型,简单介绍Python中的几种数据类型
简单介绍Python中的几种数据类型 python 里面分为 基本数据类型 和 复合数据类型 基本数据类型包括:数值 字符串 布尔 和 none 复合数据类型包括:列表 元组 字典 和集合怎么算是深情 ...
最新文章
- ios查看帧率的软件_程序员必看!直播软件开发弱网下保障高清流畅推流的方法...
- FileUpload控件学习
- java list集合增删改_Java中集合类list的增删改查
- 前端学习(3055):vue+element今日头条管理-反馈
- flink运行原理_Flink运行架构剖析
- 逻辑回归、线性回归直观感受
- 各种排序算法比较--2015年7月23日22:33:43v1.0版
- 免费的位图字体制作工具Bitmap Font Generator使用教程
- python3 ftplib_python3从零学习-5.10.9、ftplib—FTP 协议客户端
- Tensor A must be from the same graph as Tensor B
- 七大热门小程序框架横评,谁是性能之王
- 深度学习基础学习-残差
- linux 查看策略路由,Linux下的策略路由。
- You should consider either expiring and/or testing connection validity before use in your applicat
- CASIE: Extracting Cybersecurity Event Information from Text阅读总结
- 在Solaris下自动启动oracle|Sybase
- IEEE-754标准
- 重装系统后开机黑屏显示cannot load file怎么办
- 数据治理服务及数据治理应用解决方案
- windows 如何批量修改文件名称-使用ren命令
热门文章
- python中PIL.Image,OpenCV,Numpy图像格式相互转换
- UFLDL教程 -- 译文版
- vs:严重性代码说明项目文件行错误LNK1168无法打开testes.exe进行写入
- 2021-08-21 初识javabean
- python验证身份证最后一位数字代表什么_身份证尾数带X的人,是有什么特殊身份吗?看完涨知识了...
- java中aop和aoc的区别_你喝到的波尔多AOC、AOP红酒是真的吗?
- C++ std::condition_variable notify_one()与notify_all()的作用
- js百度地图小车html,百度地图web开发(基于javascript)
- 开发板Linux内核,芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)
- lol游戏挂机软件_“本不想挂机,但系统不让重连!”LOL成“挂机联盟”,5局3挂机...