命令行操作MySQL - enum类型 与 set类型

这是命令行操作MySQL数据库系列博客的第八篇,今天这篇博客记录 enum类型 与 set类型 的用法。


一、enum类型

enum类型又称为枚举类型。在创建表时,enum类型的取值范围以列表的形式指定,其基本形式如下:
属性名 enum(‘值1’, ‘值2’, …, ‘值n’)

其中,“属性名”参数指字段的名称,“值n”参数表示列表中的第n个值。enum类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。如果数据值列表在255个以内,那么一个字节就够,如果超过255但是小于65535,那么系统采用两个字节保存。列表中的每个值独有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。默认编号从1开始!

例:

  1. 创建表

    create table test_enum(id int, name varchar(32), sex enum('男', '女', '未知'));
    

    在这里插入图片描述

  2. 插入数据

    insert into test_enum values(1, '老王', '男');
    insert into test_enum values(2, '老李', '人妖');	# 插入失败案例
    insert into test_enum values(2, '老李', '未知');	# 插入成功案例
    

    在这里插入图片描述
    只能插入一个且需对应创建表时指定的数据。

  3. 使用数值代表插入

    insert into test_enum values(3, '刘女士', 2);
    

    在这里插入图片描述

  4. 以对应enum的整数值进行查询

    select 字段名 +0 from 表名;

    select sex +0 from test_enum;
    

    在这里插入图片描述
    1是男;2是女;3是未知。

如果enum类型加上了NOT NULL属性,其默认值为取值列表的第一个元素。如果不加NOT NULL属性,enum类型将允许插入NULL,而且NULL为默认值。


二、set类型

在创建表时,set类型的取值范围就以列表的形式指定了,其基本形式如下:属性名 set(‘值1’, ‘值2’, …, ‘值n’)

其中,属性名参数指字段的名称,“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与enum类型一样。set类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。set类型的值最多只能是由64个元素构成的组合。

例:

  1. 创建表
create table test_set(id int, name varchar(32), at_home set('足球', '追剧', '篮球', '撩妹', '游戏'));

在这里插入图片描述

  1. 插入数据
insert into test_set values(1, '老王', '撩妹,游戏');
insert into test_set values(2, '老李', '足球,篮球,游戏');

在这里插入图片描述


总结:
enum和set用法基本一样,根据项目需要选择;enum只能插入一个且需对应创建表时指定的数据;set可以插入多个且需对应创建表时指定的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpp_learners

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值