MySql 字符串类型 - enum、set

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySql 字符串类型 - enum、set

  • enum 类型和 set 类型都是用于存储“有给定值的可选字符”,比如类似表单中的单选,多选,下拉列表。


  • enum 类型(单选类型/枚举类型) : enum 类型通常用于存储表单中的“单选项”的值。 设定形式: enum('选项值1','选项值2','选项值3'.....) 这些选项值都对应了相应的“索引值”,类似素引数组的下标,但是从1开始的。 即这些选项的索引值分别为: 1,2,3, 4,... enum 类型最多可设定6535个选项。


示例: create table tab1 (id int, edu('大学','中学','小学') ); insert into tab1 (id,edu) values(1, ‘大学"); 或: insert into tab1 (id, edu)values (1,2); // 表示中学


  • set 类型(多选类型) : set 类型通常用于存储表单中的“多选项”的值。 设定形式: set('选项值1','选项值2','选项值3'.....) 这些选项值都对应了相应的“索引值”,其索引值从1开始,并“依次翻倍”。 即这些选项的索引值分别为: 1,2,4,8, 16, ... (其实就是 2的n次方) enum类型最多可设定64个选项值。


示例: create table tab2 (aihao enum('篮球','排球','足球') ); // 对应索引值为1,2,4,8 insert into tab2 (aihao) values('篮球'); 或: insert into tab2 (aihao) values('篮球,排球'); 或: insert into tab2 (aihao) values( '篮球,排球,足球'); 或: insert into tab2 (aihao) values(2); // 表示排球 (2) 或: insert into tab2 (aihao) values(3); // 表示 '篮球,排球' (1+2) 或: insert into tab2 (aihao) values (7); // 表示 '篮球,排球,足球' (1+2+4)


``` mysql> create table enumTest (id int autoincrement primary key, username varchar(20), userpass varchar(32), edu enum('小学', '中学', '大学'), likes set('篮球', '足球', '排球')); mysql> desc enumTest; +-----------+----------------------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+----------------------------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | autoincrement | | username | varchar(20) | YES | | NULL | | | userpass | varchar(32) | YES | | NULL | | | edu | enum('小学','中学','大学') | YES | | NULL | | | likes | set('篮球','足球','排球') | YES | | NULL | | +-----------+----------------------------------+------+-----+---------+----------------+


mysql> insert into enumTest (username, userpass, edu, likes) values ('user1', '123', '小学', '篮球'); mysql> select * from enumTest; +----+-----------+-----------+--------+--------+ | id | username | userpass | edu | likes | +----+-----------+-----------+--------+--------+ | 1 | user1 | 123 | 小学 | 篮球 | +----+-----------+-----------+--------+--------+


mysql> insert into enumTest (username, userpass, edu, likes) values ('user2', '123', '中学', '篮球,排球'); mysql> select * from enumTest; +----+-----------+-----------+--------+---------------+ | id | username | userpass | edu | likes | +----+-----------+-----------+--------+---------------+ | 1 | user1 | 123 | 小学 | 篮球 | | 2 | user2 | 123 | 中学 | 篮球,排球 | +----+-----------+-----------+--------+---------------+


mysql> insert into enumTest (username, userpass, edu, likes) values ('user3', '123', '大学', '篮球,排球,太阳'); ERROR 1265 (01000): Data truncated for column 'likes' at row 1


mysql> insert into enumTest (username, userpass, edu, likes) values ('user2', '123', 2, 4); mysql> select * from enumTest; +----+-----------+-----------+--------+---------------+ | id | username | userpass | edu | likes | +----+-----------+-----------+--------+---------------+ | 1 | user1 | 123 | 小学 | 篮球 | | 2 | user2 | 123 | 中学 | 篮球,排球 | | 3 | user2 | 123 | 中学 | 排球 | +----+-----------+-----------+--------+---------------+ ```


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
SQL 自然语言处理 关系型数据库
MySQL的match匹配多个字符串的语法
【8月更文挑战第27天】MySQL的match匹配多个字符串的语法
160 67
|
6天前
|
自然语言处理 算法 Java
Java如何判断两句话的相似度类型MySQL的match
【9月更文挑战第1天】Java如何判断两句话的相似度类型MySQL的match
13 2
|
8天前
|
SQL 自然语言处理 关系型数据库
MySQL的match匹配多个字符串的语法
【8月更文挑战第29天】MySQL的match匹配多个字符串的语法
27 2
|
9天前
|
索引 Python 容器
为什么Python中会有集合set类型?
为什么Python中会有集合set类型?
|
20天前
|
存储 关系型数据库 MySQL
MySQL bit类型增加索引后查询结果不正确案例浅析
【8月更文挑战第17天】在MySQL中,`BIT`类型字段在添加索引后可能出现查询结果异常。表现为查询结果与预期不符,如返回错误记录或遗漏部分数据。原因包括索引使用不当、数据存储及比较问题,以及索引创建时未充分考虑`BIT`特性。解决方法涉及正确运用索引、理解`BIT`的存储和比较机制,以及合理创建索引以覆盖各种查询条件。通过`EXPLAIN`分析执行计划可帮助诊断和优化查询。
|
24天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
1月前
|
Python
python集合类型 (Set Types)
【8月更文挑战第3天】
45 9
|
7天前
|
存储 关系型数据库 MySQL
|
7天前
|
关系型数据库 MySQL 数据管理
深入解析 MySQL 中的关系类型
【8月更文挑战第31天】
12 0
|
20天前
|
前端开发 关系型数据库 MySQL
mysql截断字符串
在MySQL中,有多种方法可以实现字符串的截断,每种方法都有其特定的应用场景。通过灵活使用这些字符串处理函数,可以高效地对数据进行处理和分析。在实际的数据库操作中,根据实际需求选择最合适的函数是关键。
37 0
下一篇
DDNS