• 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

  • 相关阅读:
    Django之DRF框架
    工单系统之用户模块整体实现
    用户模块+jwt实现+注册带token值
    iOS控件之UITableView之滚动
    iOS控件之UITableView
    iOS控件
    iOS 长连接
    MAC PHP Composer
    smartSVN 删除目录/仓库
    smartSVN 分支与合并
  • 原文地址:https://www.cnblogs.com/weibanggang/p/9602075.html
Copyright © 2020-2023  润新知