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

MySQL中ENUM类型学习--MySql语法

这说明你可以使用下面的SELECT语句来找出分配了非法ENUM值的行: · mysql> SELECT * FROM tbl_name WHERE enum_col=0;...当创建表时,ENUM成员值的尾部空格将自动被删除。 当检索时,保存在ENUM列的值使用列定义中所使用的大小写来显示。请注意可以为ENUM列分配字符集和 校对规则。...例如,你可以这样从ENUM列搜索数值值: mysql> SELECT enum_col+0 FROM tbl_name; 如果将一个数字保存到ENUM列,数字被视为索引,并且保存的值是该索引对应的枚举成员...(换句话说,ENUM值根据索引编号进行排序)。例如,对于ENUM('a','b'),'a'排在'b'前面,但对于ENUM('b','a'),'b'排在'a'前面。...如果你想要确定一个ENUM列的所有可能的值,使用SHOW COLUMNS FROM tbl_name LIKE enum_col,并解析输出中第2列的ENUM定义。

2.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL精选 | 枚举类型ENUM的DDL变更测试

    测试基于InnoDB存储引擎上,对MySQL数据库枚举类型ENUM的字段进行DDL变更操作,是否需要重新创建表呢?对数据库的事务处理有何影响?对数据库的数据服务提供有何性能影响?通过本文了解下。...log InnoDB存储引擎:plugin-InnoDB 1.1.8 (二) 测试数据准备 ---- 鉴于篇幅的缘由,单独作为一篇文章分享在www.mysqlops.com网站上,请点击MySQL数据库之数据类型集合类型和枚举类型测试环境...: 0 Warnings: 0 小结: 枚举类型字段,由允许NULL值且无默认值的定义属性,变更为不允许存储NULL值和制定枚举类型字段的默认值,这个过程需要表级锁,锁住表堵塞其他事务性操作,与其他数据类型的字段属性变更是一样的...0.00 sec)Records: 0 Duplicates: 0 Warnings: 0 小结: 枚举类型字段已经存在默认值,只是修改默认值为不同默认值的操作,是不需要重新建表与锁表,也是与其他数据类型字段的字段属性变更一样...MySQL数据库枚举类型字段与其他数据类型一样,进行DDL变更操作可能产生的影响; b.

    3.5K30

    MySQL中 enum 插入的时候注意事项

    后来发现是enum字段没有加引号搞的鬼。 结论:    enum的字段,在插入的时候,必须带上引号。否则会出现不可预期的问题。...ENUM枚举     一般不建议使用,后期不便于扩展。任何不在枚举的范围的值插入都会报错,一般用tinyint替代ENUM比较合适。      ENUM的字段值不区分大小写。...补充: enum的存储原理: (http://justwinit.cn/post/7354/?...utm_source=tuicool&utm_medium=referral) 在建立enum类型的字段时,我们会给他规定一个范围比如 enum('a','b','c'),这时mysql内部会建立一张hash...同样,enum在mysql手册上的说明: ENUM('value1','value2',...) 1或2个字节,取决于枚举值的个数(最多65,535个值) 除非enum的个数超过了一定数量,否则他所占的存储空间也总是

    1.4K31

    【MySql】MySql的数据类型

    数据类型分类 对于数据类型分类,这里简单分为数值类型(如BIT,BOOL,INT),文本、二进制类型(如CHAR,VARCHAR),时间日期(DATE),String类型(如ENUM类型),这里简单了解一下即可...of range value for column 'num' at row 1 mysql> 用tinyint unsigned数据类型创建表t2: mysql> create table if not...反过来,我们如果已经有数据被插入到MySql中了,一定是插入的时候是合法的 所以MySql中一般而言,数据类型本身也是一种约束,约束程序员尽可能进行正确的插入,约束使用者,如果你不是一个很好的使用者,...enum和set 语法: enum:枚举,“单选”类型; enum(‘选项1’,‘选项2’,‘选项3’,…); 该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑...举个例子 mysql> create table if not exists votes ( -> username varchar(30), -> gender enum('男','女

    1.3K30

    【MySQL】详解MySQL数据类型

    一、数据类型 各类型的数值范围: 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的。...mysql> insert into tt4 values ( 65 , 65 ); mysql> select * from tt4; +------+------+...在MySQL中,字符就真的是字符,字母或汉字都认为是字符。  1.5、varchar varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节。...1.7、enum和set enum:枚举,“单选”类型; enum('选项1','选项2','选项3',...);         该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值...,想想Linux权限,采用比 特位位置来个set中的爱好对应起来 -> gender enum('男','女')); --注意:使用数字标识的时候,就是正常的数组下标 插入数据: insert into

    1.2K10

    mysql 数据类型

    一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE...忽略 DECIMAL 数据类型的精度和计数方法修饰符将会使 MySQL 数据库把所有标识为这个数据类型的字段精度设置为 10,计算方法设置为 0。...MySQL 会自动使用系统当前的日期和时间来填充它。 复合类型   MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。...虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。 一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。...并且与 ENUM 类型相同的是任何试图在 SET 类型字段中插入非预定义的值都会使 MySQL 插入一个空字符串。

    3.7K40

    MySQL数据类型

    MySQL不同存储引擎可能会有不同。下面的内容以InnoDB为主。 选择数据类型的步骤 确定合适的大类型:数字、字符串、时间、二进制 确定具体的类型:有无符号、取值范围、变长定长等。...建议使用TINYINT代替ENUM。 避免使用整数的显示宽度。...ENUM、SET、BIT ENUM列允许在列中存储一组定义值中的单个值。 SET列允许在列中存储一组定义值中的一个或多个值。 BIT在InnoDB中其实是一个最小的整数类型。...而MySQL在检索BIT的时候会将其当做字符串,而不是整数,这可能会导致一些奇怪的行为。 不建议使用这三个类型:用整数代替。 一些原则 选择最小的满足需求的数据类型。...一般情况下,应该尽量使用可以正确存储数据的最小数据类型。 简单就好。

    3.3K40

    MySQL数据类型

    数据类型分类 简单看一下数据可常见类型: 数值类型 tinyint类型 创建一个表,表中内容是tinyint型有符号: mysql> create table if not exists t1 (...总结: 如果插入的数据超过MySQL数据类型的范围,那么MySQL就不让你插入,直接拦截,不让做对应的操作。...如果已经有数据被成功插入到MySQL中,那么插入的时候一定是合法的。 因此,MySQL中,一般而言,数据类型本身也是一种约束。...:枚举,“单选”类型; enum('选项1','选项2','选项3',...); 该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字...mysql> create table if not exists votes( -> username varchar(30), -> gender enum('男','女'),

    66010
    领券