MySQL中Set与Enum的区别和使用详解

 更新时间:2024年01月11日 10:47:47   作者:好奇的7号  
这篇文章主要介绍了MySQL中Set与Enum的区别和使用详解,数据库中的 set 是一种集合数据类型,用于存储不同的元素,每个元素只能出现一次,Set 的主要作用是方便进行集合运算,如并集、交集等操作,需要的朋友可以参考下

MySQ中的Set与Enum

1、SET

数据库中的 set 是一种集合数据类型,用于存储不同的元素,每个元素只能出现一次。Set 的主要作用是方便进行集合运算,如并集、交集等操作。

使用:

在数据库中,set 可以用于存储需要去重的数据,如用户的关键词、标签等信息。当需要查询某个关键词是否存在时,只需要判断该关键词是否在 set 中即可,而不需要执行复杂的查询语句。

例:

CREATE TABLE example (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  keywords SET('tech', 'finance', 'health')
);

然后可以使用 INSERT 语句向表中添加数据: 需要注意,keywords字段的内容只能存储'tech'、'finance'、'health' 中的一个或多个值。例如 'tech' 和 'finance' 的组合就是一个合法的值,而 'sport' 则不是。

INSERT INTO example (keywords) VALUES ('tech,finance');

查询时,可以使用 FIND_IN_SET 函数判断一个关键词是否在 set 中:

SELECT * FROM example WHERE FIND_IN_SET('tech', keywords) > 0;

这条语句将会返回所有包含 "tech" 关键词的记录。

2、ENUM

SET 和 ENUM 类型的确有一些相似之处,都是用来限定字段的取值范围,但它们也有很大的不同。在 MySQL 数据库中,ENUM 类型用来表示枚举类型,它只能存储枚举值中的一个。

例如:

CREATE TABLE example (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  status ENUM('pending', 'approved', 'rejected')
);

这里定义了一个名为 status 的字段,该字段的类型为 ENUM,可以存储 'pending'、'approved'、'rejected' 中的任意一个值。如果尝试存储其他值,则会报错。

相比Set:

CREATE TABLE example (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  tags SET('tech', 'finance', 'health')
);

这里定义了一个名为 tags 的字段,该字段的类型为 SET,可以存储 'tech'、'finance'、'health' 中的任意一个或多个值。

例如 'tech,finance'、'health'、'finance,health' 都是合法的值。

到此这篇关于MySQL中Set与Enum的区别和使用详解的文章就介绍到这了,更多相关MySQ中的Set与Enum内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 8.0.17 winx64(附加navicat)手动配置版安装教程图解

    mysql 8.0.17 winx64(附加navicat)手动配置版安装教程图解

    这篇文章主要介绍了mysql 8.0.17 winx64(附加navicat)手动配置版安装教程图解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • MySQL prepare原理详解

    MySQL prepare原理详解

    这篇文章主要介绍了MySQL prepare的相关内容,包括prepare的产生,在服务器端的执行过程,以及jdbc对prepare的处理以及相关测试,需要的朋友可以了解下。希望对大家有所帮助。
    2017-09-09
  • MySQL Workbench工具导出导入数据库方式

    MySQL Workbench工具导出导入数据库方式

    这篇文章主要介绍了MySQL Workbench工具导出导入数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • 分析MySQL并发下的问题及解决方法

    分析MySQL并发下的问题及解决方法

    本篇文章给大家详细分析了MySQL在并发场景下的问题及解决思路,对这方面有兴趣的朋友参考学习下吧。
    2018-01-01
  • Mysql中isnull,ifnull,nullif的用法及语义详解

    Mysql中isnull,ifnull,nullif的用法及语义详解

    MySQL中ISNULL判断表达式是否为NULL,IFNULL替换NULL值为指定值,NULLIF在表达式相等时返回NULL,用于空值处理、条件判断及避免错误,本文给大家介绍Mysql中isnull,ifnull,nullif的用法及语义,感兴趣的朋友一起看看吧
    2025-06-06
  • mysql替换表中的字符串的sql语句

    mysql替换表中的字符串的sql语句

    替换字段里数据内容部分字符串,这个在替换网址呀什么的最经常用了,发布一下做个笔记
    2008-06-06
  • 新手把mysql装进docker中碰到的各种问题

    新手把mysql装进docker中碰到的各种问题

    这篇文章主要给大家介绍了新手第一次把mysql装进docker中可能碰到的各种问题,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 实现mysql级联复制的方法示例

    实现mysql级联复制的方法示例

    这篇文章主要介绍了实现mysql级联复制的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 将.sql文件导入到MySQL数据库具体步骤

    将.sql文件导入到MySQL数据库具体步骤

    MySQL有多种方法导入多个.sql文件,下面这篇文章主要介绍了将.sql文件导入到MySQL数据库的具体步骤,文中将实现步骤介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Mysql ERROR 1067: Invalid default value for字段问题

    Mysql ERROR 1067: Invalid default v

    这篇文章主要介绍了Mysql ERROR 1067: Invalid default value for字段问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论