MySQL字段之集合(set)枚举(enum) (2008-12-23 13:51:23)
标签:it  分类:MySQL

集合 SET

mysql> create table jihe(f1 set('f','m'));
Query OK, 0 rows affected (0.11 sec)

mysql> desc jihe;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| f1    | set('f','m') | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

可以插入值 "f" "m"

mysql> insert into jihe values("f");
Query OK, 1 row affected (0.56 sec)

mysql> insert into jihe values("m");
Query OK, 1 row affected (0.19 sec)

可以按照序号输入 注意序号为 1 2 4 8 16 32 ....

mysql> insert into jihe values("1");
Query OK, 1 row affected (0.11 sec)

mysql> insert into jihe values("2");
Query OK, 1 row affected (0.11 sec)

所以如果是3那插入的值为 第一个和第二个

mysql> insert into jihe values("3");
Query OK, 1 row affected (0.17 sec)

+-------+
| f1    |
+-------+
| f     |
| m     |
| f     |
| m     |
| f,m   |

+-------+

其他字母不能插入

mysql> insert into jihe values("q");
ERROR 1265 (01000): Data truncated for column 'f1' at row 1

插入空
mysql> insert into jihe values("0");
Query OK, 1 row affected (0.11 sec)

超出序号之和不能插入

mysql> insert into jihe values("4");
ERROR 1265 (01000): Data truncated for column 'f1' at row 1

枚举

mysql> create table meiju(f1 enum('1','2','3','4','5','6'));
Query OK, 0 rows affected (0.92 sec)

mysql> desc meiju;
+-------+-------------------------------+------+-----+---------+-------+
| Field | Type                          | Null | Key | Default | Extra |
+-------+-------------------------------+------+-----+---------+-------+
| f1    | enum('1','2','3','4','5','6') | YES  |     | NULL    |       |
+-------+-------------------------------+------+-----+---------+-------+

mysql> insert into meiju values(2);

mysql> insert into meiju values("2");

mysql> insert into meiju values("6");

序号为 1  2  3  4  5

内容没有序号也没有就不能插入

mysql> insert into meiju values(8);
ERROR 1265 (01000): Data truncated for column 'f1' at row 1
mysql> insert into meiju values("8");
ERROR 1265 (01000): Data truncated for column 'f1' at row 1

mysql> select * from meiju;
+------+
| f1   |
+------+
| 1    |
| 2    |
| 2    |
| 6    |
+------+

改表

mysql> alter table meiju modify f1 enum("a","b","c","d","e","f");
Query OK, 4 rows affected (0.39 sec)
Records: 4  Duplicates: 0  Warnings: 0

可以自动将记录当序号匹配成新的字段值(挺神奇)

mysql> select * from meiju;
+------+
| f1   |
+------+
| a    |
| b    |
| b    |
| f    |
+------+

一个记录只能有一个枚举值 不像set 可以累加

mysql> insert into meiju values(7);
ERROR 1265 (01000): Data truncated for column 'f1' at row 1

注意最好输入的是值得时候值要加引号 否则当作序号来处理

当带引号的数字不符合枚举要求时会试一试当作序号合适不合适

如 insert into meiju values("7");

7不在枚举值内 就插入第7个值 如果没有7个值则报错

集合 和 枚举的区别

1 集合可以有64个值 枚举有65535个

2 集合的序号是 1 2 4 8 16 枚举是 1 2 3 4 5 6

3 集合一个字段值可以有好几个值

+-------+
| f1    |
+-------+
| f,m   |
+-------+

而枚举只能有一个

MySQL字段之集合(set)枚举(enum)的更多相关文章

  1. 一次修改mysql字段类型引发的技术探究

    说来,mysql数据库是我们项目中用的比较多的库,ORM工具喜欢采用细粒度的MyBatis.这里面就这么引出了两者之间的故事! 首先,说改字段吧,将一个表中的varchar字段改为enum字段.如下: ...

  2. (转)MySQL字段类型详解

    MySQL字段类型详解 原文:http://www.cnblogs.com/100thMountain/p/4692842.html MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间 ...

  3. 企业面试题|最常问的MySQL面试题集合(一)

    问题1:char.varchar的区别是什么?varchar是变长而char的长度是固定的.如果你的内容是固定大小的,你会得到更好的性能. 问题2: TRUNCATE和DELETE的区别是什么?DEL ...

  4. mysql字段数据类型、设置严格模式

    表操作 今日内容 1.数据类型 建表的时候,字段都有对应的数据类型 整型 浮点型 字符类型(char与varchar) 日期类型 枚举与集合 2.约束条件 primary key unique key ...

  5. 常问的MySQL面试题集合

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 除了基础题部分,本文还收集整理的MySQL面试题还包括如下知识点或题型: MySQL高性能索引 ...

  6. MySQL字段类型与操作

    MYSQL字段类型与操作 字符编码与配置文件 操作 代码 功能 查看 \s 查看数据库基本信息(用户.字符编码) 配置(配置文件层面) my-default.ini windows下MySQL默认的配 ...

  7. Mysql字段类型与合理选择

    字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许 ...

  8. 【C#基础概念】枚举 (enum详解)

    我们重点来讲解 简单枚举和标志枚举的用法和区别 继承 Object-> ValueType ->Enum Object-> ValueType ->struct 包括int f ...

  9. MySQL实现嵌套集合模型

    MySQL实现嵌套集合模型 译文主要是介绍如何用MySQL来存储嵌套集合数据.在其中会增加一些自己的理解,也会删除掉一些自认为无用的废话. 这篇文章主要讲的是嵌套集合模型,所以邻接表不是本文的重点,简 ...

随机推荐

  1. Java Hour 43 Weather ( 12 ) - 杭州 Show

    终于从fastjson 的阴影中走出来了,接下去就是显示一个完整的天气信息了. 43.1 Weather Show 首先增加Model 中的属性. public class Weatherinfo { ...

  2. 操作SQLite数据库

    本文摘自: http://docs.blackberry.com/en/developers/deliverables/25108/Creating_and_deleting_SQLite_datab ...

  3. Codeforces Gym 100637A A. Nano alarm-clocks 前缀和处理

    A. Nano alarm-clocks Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/p ...

  4. Messenger信使

    * Messenger用于Activity和Service之间消息传递 需求:activity来绑定服务,绑定成功后,将数据发送给service,service收到消息后,再发送信息给activity ...

  5. Win7-64bit系统下安装mysql的ODBC驱动

    安装过mysql数据库后,有些软件在调用mysql数据库时不会直接调用,需要安装mysql数据库的ODBC驱动,再来调用.这里就介绍下,如何在win7系统下安装mysql的ODBC驱动. Win7系统 ...

  6. linux下Gnome桌面环境的安装

    在实际工作中,无论是生产环境还是公司内部环境.很多时候装的linux系统都是最小化安装的.即没有桌面环境, 那么如果有时我们又需要一个桌面环境.该怎么安装呢?其实不难,现笔者将安装方法分享如下. 测试 ...

  7. Knowledgeroot安装与使用入门

    采用 PHP 开发的知识库系统,基于树状结构对内容进行组织.使用 FCKEditor 进行内容编辑. 效果http://demo.knowledgeroot.org/index.php?id=2230 ...

  8. Tri Tiling[HDU1143]

    Tri Tiling Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  9. js对象数组按属性快速排序

    前一篇<关于selector性能比赛>中提到,目测觉得在$("div,p,a")这样有逗号时,sizzle耗时异常(600多个元素,花了200ms),说是它可能没有优化 ...

  10. 精通CSS :nth-child伪类

    :nth-child 基本用法 :nth-child:nth-child(8) 选中第8个子元素 li:nth-child(8) span { background-color: #298EB2; b ...