mysql中的set和enum类型的用法和区别

mysql中的enum和set其实都是string类型的而且只能在指定的集合里取值,

不同的是set可以取多个值,enum只能取一个值。  

1
2
3
4
5
6
7
8
9
10
11
12
13
[php]
CREATE TABLE `20121101_t` (   
  `id` int(11) NOT NULL AUTO_INCREMENT,   
  `name` varchar(20) NOT NULL,   
  `cl` set('x','w','r') NOT NULL,   
  `c2` enum('f','d') NOT NULL,   
  PRIMARY KEY (`id`)   
) ENGINE=InnoDB    
   
insert into 20121101_t   
values(null,'a.txt','r,w','d');     
insert into 20121101_t   
values(null,'b.txt','r,w','f');   

ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举。

在下列某些情况下,值也可以是空串("") 或NULL:

如果将一个无效值插入一个 ENUM (即,一个不在允许值列表中的字符串),空字符串将作为一个特殊的错误值被插入。事实上,这个字符串有别于一个"普通的"空字符串,因为这个字符串有个数字索引值为 0。稍后有更详细描述。

如果一个 ENUM 被声明为NULL,NULL 也是该列的一个合法值,并且该列的缺省值也将为NULL 。如果一个ENUM 被声明为NOT NULL,该列的缺省值将是该列表所允许值的第一个成员。

每个枚举值均有一个索引值:

在列说明中列表值所允许的成员值被从 1 开始编号。

空字符串错误值的索引值为 0。这就意味着,你可以使用下面所示的 SELECT 语句找出被赋于无效ENUM值的记录行。

mysql> SELECT * FROM tbl_name WHERE enum_col=0;

NULL 值的索引值为NULL。

例如,指定为 ENUM("one", "two", "three") 的一个列,可以有下面所显示的任一值。每个值的索引值也如下所示:

值 索引值

NULL NULL

"" 0

"one" 1

"two" 2

"three" 3

测试时发现''时,用0来表示查不到数据。

换个枚举最大可以有 65535 个成员值。

从 MySQL 3.23.51 开始,当表被创建时,ENUM 值尾部的空格将会自动删除。

当为一个 ENUM 列赋值时,字母的大小写是无关紧要的。然而,以后从列中检索出来的值的大小写却是匹配于创建表时所指定的允许值。

如果在一个数字语境中检索一个ENUM,列值的索引值将被返回。例如,你可以像这样使用数字值检索一个ENUM 列:

mysql> SELECT enum_col+0 FROM tbl_name;

如果将一个数字存储到一个 ENUM 中,数字被当作为一个索引值,并且存储的值是该索引值所对应的枚举成员。(但是,这在LOAD DATA 将不能工作,因为它视所有的输入均为字符串。) 在一个ENUM字符串中存储数字是不明智的,因为它可能会打乱思维。

ENUM 值依照列规格说明中的列表顺序进行排序。(换句话说,ENUM 值依照它们的索引号排序。)举例来说,对于ENUM("a", "b")"a" 排在"b" 后,但是对于ENUM("b", "a") , "b" 却排在"a" 之前。空字符串排在非空字符串前,NULL 值排在其它所有的枚举值前。为了防止意想不到的结果,建议依照字母的顺序定义ENUM列表。也可以通过使用GROUP BY CONCAT(col) 来确定该以字母顺序排序而不是以索引值。

如果希望得到一个 ENUM 列的所有可能值,可以使用SHOW COLUMNS FROM table_name LIKE enum_colum

转载于:https://www.cnblogs.com/xzj8023tp/p/6251629.html

set和enum类型的用法和区别相关推荐

  1. PHP中MySQL、MySQLi和PDO的用法和区别

    MySQL 是 PHP 操作 MySQL 数据库最原始的 Extension.MySQLi 的 i 代表 Improvement ,提供了相对进阶的功能,就 Extension 而言,本身也增加了安全 ...

  2. 值类型和引用类型及其区别!

    值类型和引用类型的基类 引用类型和值类型都继承自System.Object类.不同的是,几乎所有的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.Valu ...

  3. java中enum类型的使用

    java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java 中定义的常量值不采用enmu 枚举类型,而采用public final static 类型来定义呢?以前我 ...

  4. ASP.NET Application,Session,Cookie和ViewState等对象用法和区别

    ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,C ...

  5. Application,Session,Cookie和ViewState等对象用法和区别

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法             ...

  6. ViewBag和ViewData的用法和区别

    ViewBag和ViewData的用法和区别 作者:欧日鑫 撰写时间:2020年8月8日 一.ViewBag的定义 public dynamic ViewBag {get {if (_dynamicV ...

  7. MySQL 中的 SET 与 ENUM 类型使用详解

    一.SET类型 在创建表时,就指定SET类型的取值范围. [sql] view plaincopy 属性名 SET('值1','值2','值3'...,'值n') 其中,"属性名" ...

  8. MySQL enum类型及在PHP中的使用

    MySQL  enum类型及在PHP中的使用 enum有优点.但个人觉得...缺点更多,客观的讲:优点主要是在建数据 库的时候就可以把一些值给规范好.缺点是..enum不适合PHP.主要是PHP是弱类 ...

  9. Python中 rstrip()、 lstrip()、 strip() 的用法和区别

    目录: 题目一:Python中 rstrip(). lstrip(). strip() 的用法和区别 题目二:python中append().expend()函数的用法和区别 题目三:Python中z ...

最新文章

  1. python开发好学吗-Python的前景和Python好不好学呢?
  2. Ubuntu 10.10 安装配置 Ruby on Rails
  3. Kingbase金仓查看表空间占用率
  4. MATLAB从入门到精通-matlab计算多重复杂多边形重叠面积
  5. Windows2008应用之配置客户端自动添加打印机
  6. python跟java 效率_Python和Java该如何选择?老男孩Python人工智能
  7. python中res代表什么_在下面的代码中,zip(*res)在python中是什么意思?
  8. angularjs $apply
  9. Kaldi的英文缩写
  10. 将应用制作成镜像发布到服务器k8s上作为容器微服务运行。
  11. 游戏开发之类的构造函数调用时机(规则)及类对象作为另一个类的成员变量(C++基础)
  12. ZH奶酪:PHP中添加HTML代码的三种方法
  13. 涉嫌抄袭!致歉,抖音Semi Design承认参考阿里Ant Design
  14. Linux 运维工程师学习成长路线上要经历哪四个阶段?
  15. docker mysql 镜像 下载_docker mysql 镜像下载
  16. 大气中水汽凝结物对微波遥感的影响
  17. c语言 long int最大数,long整型的最大值跟处理器位数有关
  18. 老瞎眼 pk 小鲜肉-线段树+区间离线
  19. JavaScript 变量命名规范总结
  20. 亿道丨三防手机丨手持终端丨PDA丨优势与特点

热门文章

  1. linux定时创建文件,linux下如何创建定时任务
  2. mysql优化 运维_MySQL运维---MySQL优化
  3. python 追加到字典_使用Python读取,写入和解析JSON
  4. background 互联网图片_cssbackground-image和layer-background-image的区别
  5. C语言 | 结构体指针
  6. linux源码安装apache2,CentOS7编译安装Apache2
  7. php如果字符串有1 3 5,Day3-php 字符串1
  8. python自动化运维快速入门pdf下载_Python自动化运维快速入门
  9. Sublime Text提示Unable to download XXX. Please view the console for more details安装插件失败解决
  10. 视频光端机在安防监控工程中的常见技术问题