“了解MySQL中的enum枚举数据类型“

目录

# 开篇

1. 创建包含枚举类型的表

2. 插入枚举类型的数据

3. 查询包含枚举类型的表

4. 更新枚举类型的数据

5. 使用枚举类型的好处

注意事项

示例总结

附加


# 开篇

        在数据库中,枚举(ENUM)是一种数据类型,用于存储一组预定义的值。这在某些情况下非常有用,例如,当一个列只能包含有限的、离散的值时,使用枚举可以确保数据的完整性和一致性,并且可以简化代码。

以下是使用枚举类型的一些常见示例和用途:

1. 创建包含枚举类型的表

在创建表时,可以将列定义为ENUM类型,并列出所有可能的值。例如,在xx系统中,状态列通常会使用枚举类型。

CREATE TABLE plm_change_request (id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',change_content TEXT COMMENT '变更内容',change_reason TEXT COMMENT '变更原因',impact_analysis TEXT COMMENT '影响分析',status ENUM('pending', 'approved', 'rejected') COMMENT '状态',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT '变更申请表';

在这个例子中,status列使用了枚举类型,只能包含'pending''approved''rejected'这三个值。

2. 插入枚举类型的数据

插入数据时,枚举列只能接受预定义的值。

INSERT INTO plm_change_request (change_content, change_reason, impact_analysis, status) VALUES
('更换电阻型号', '现有电阻库存不足', '无重大影响', 'pending'),
('增加新电容', '改进电路设计', '需重新测试', 'approved');

3. 查询包含枚举类型的表

查询枚举列的数据与查询普通字符串数据类似。

SELECT * FROM plm_change_request WHERE status = 'pending';

4. 更新枚举类型的数据

更新枚举列的数据也与更新普通字符串数据类似。

UPDATE plm_change_request SET status = 'approved' WHERE id = 1;

5. 使用枚举类型的好处

  • 数据完整性:通过限制列的值为预定义的一组值,可以防止插入或更新无效数据。
  • 性能:在某些数据库系统中,枚举类型的存储和检索效率可能高于字符串类型,因为枚举值通常存储为内部整数代码。
  • 可读性:枚举值可以使数据更具可读性和理解性,因为它们通常代表一些有意义的状态或类别。

注意事项

  • 扩展性:在需要频繁添加或修改可能值的情况下,枚举类型可能不太适用,因为更改枚举值需要修改表结构。
  • 移植性:某些数据库系统可能不支持枚举类型,或者实现方式有所不同。在跨数据库系统时需要注意这一点。

示例总结

以下是一个完整的表定义和使用枚举类型的示例,展示了从创建表到查询和更新数据的完整过程。

-- 创建表
CREATE TABLE plm_project_task (id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',task_name VARCHAR(100) NOT NULL COMMENT '任务名称',description TEXT COMMENT '任务描述',start_date DATE COMMENT '开始日期',end_date DATE COMMENT '结束日期',status ENUM('not started', 'in progress', 'completed') COMMENT '任务状态',assigned_to INT COMMENT '负责人ID',created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT '项目任务表';-- 插入数据
INSERT INTO plm_project_task (task_name, description, start_date, end_date, status, assigned_to) VALUES
('设计电路板', '设计新的电路板', '2024-06-01', '2024-06-30', 'in progress', 1),
('测试新组件', '测试新添加的组件', '2024-07-01', '2024-07-15', 'not started', 2);-- 查询数据
SELECT * FROM plm_project_task WHERE status = 'in progress';-- 更新数据
UPDATE plm_project_task SET status = 'completed' WHERE id = 1;

通过这种方式,我们可以在大多系统中有效地使用枚举类型来管理各种状态和分类数据。

附加

根据枚举顺序也可查询到数据;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/359859.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp中Error: project.configjson: libVersion 字段需为 string. string

错误如下 找到manifestjson文件到源码视图 添加这段代码"libVersion": "latest",即可

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第46课-使用json文件

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第45课-使用头像 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎&…

在Maven工程中手动配置并测试SpringBoot(巨详)

本篇博客承继自博客&#xff1a; 在IDEA 2024.1.3 (Community Edition)中创建Maven项目_idea2024.1.3如何创建maven项目-CSDN博客 配置POM文件 打开工程中的pom.xml文件&#xff0c;先向其中写入 <parent><groupId>org.springframework.boot</groupId><…

【挑战100天首通《谷粒商城》】-【第一天】06、环境-使用vagrant快速创建linux虚拟机

文章目录 课程介绍1、安装 linux 虚拟机2、安装 VirtualBoxStage 1&#xff1a;开启CPU虚拟化Stage 2&#xff1a;下载 VirtualBoxStage 2&#xff1a;安装 VirtualBoxStage 4&#xff1a;安装 VagrantStage 4-1&#xff1a;Vagrant 下载Stage 4-2&#xff1a;Vagrant 安装Stag…

[职场] 线上面试的准备工作 #知识分享#经验分享#媒体

线上面试的准备工作 面对求职中的面试&#xff0c;应届毕业生该做些什么准备呢&#xff1f;在这里&#xff0c;向各位分享面试前做好预案不慌张几点准备。现在许多面试是通过线上形式进行的。对于求职者来说&#xff0c;要做好两手准备。在这里&#xff0c;重点与大家分享线上面…

Qt画实时曲线图

Qt引入QcustomPlot 首先下载QcustomPlot源代码&#xff0c;https://github.com/qcustomplot/qcustomplot 下载zip文件 运行所下载的项目生成库文件libqcustomplotd2.a文件和qcustomplotd2.dll文件。 在项目中添加printsupport。 并将qcustomplot.h文件和qcustomplot.cpp文…

基于matlab的图像二值化

1 原理 图像二值化的原理是将彩色或灰度图像转换为只包含两种颜色&#xff08;通常是黑色和白色&#xff09;的二值图像的过程。其关键是通过设定一个阈值&#xff0c;将图像中的像素点的灰度值与阈值进行比较&#xff0c;根据比较结果将像素点设置为白色或黑色。步骤如下&…

ElementPlus组件与图标按需自动引入

按需自动引入组件 1. 安装ElementPlus和自动导入ElementPlus组件的插件 pnpm install element-plus pnpm install -D unplugin-vue-components unplugin-auto-import 2. vite.config.ts进行修改 import { defineConfig } from vite import vue from vitejs/plugin-vue // …

2024CICE电博会·以“链主”企业为核心,推动产业链协同发展

随着全球科技日新月异的发展&#xff0c;消费电子产业已成为推动经济增长、改善人民生活的重要力量。中国国际消费电子博览会&#xff08;简称CICE电博会&#xff09;自2001年创办以来&#xff0c;已经走过了二十余个春秋&#xff0c;凭借其独特的地理位置优势、专业的组织策划…

如何开发、使用 Starter

开发 第一步&#xff1a;创建starter工程hello-spring-boot-starter并配置pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchem…

趣味C语言——【猜数字】小游戏

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正 感谢 目录 代码…

BP神经网络-入门到理解-长文讲述

本文来自&#xff1a;老饼讲解-BP神经网络 https://www.bbbdata.com 目录 一、BP神经网络的仿生意义 二、BP神经网络的结构 三、BP神经网络的前馈与后馈 3.1 BP神经网络的前馈 3.2 什么是BP神经网络的后馈 四、BP神经网络的训练 4.1 BP神经网络归一化 4.2 梯度下降算法…

使用SpringCache实现Redis缓存

目录 一 什么是Spring Cache 二 Spring Cache 各注解作用 ①EnableCaching ②Cacheable ③CachePut ④CacheEvict 三实现步骤 ①导入spring cache依赖和Redis依赖 ②配置Redis连接信息 ③在启动类上加上开启spring cache的注解 ④ 在对应的方法上加上需要的注解 一 什么…

重构大学数学基础_week05_雅各比矩阵与雅各比行列式

这周来讲一下雅各比矩阵和雅各比行列式。 多元函数的局部线性属性 首先我们来回顾一下向量函数&#xff0c;就是我们输入一个向量&#xff0c;输出也是一个向量&#xff0c;我们假设现在有一个向量函数 这个函数意思就是在说&#xff0c;我们在原来的平面上有一个向量(x,y),经…

AIGC如何助力创意设计低成本、快速、高效的创作优质内容?

在数字化时代的浪潮中&#xff0c;创意设计行业正经历着一场由AIGC&#xff08;人工智能生成内容&#xff09;技术引领的深刻变革。AIGC以其独特的优势&#xff0c;正在帮助创意设计从业者实现低成本、快速、高效的创作&#xff0c;为行业带来了新的发展机遇。而Adobe国际认证&…

AI赋能前端:你的Chrome 控制台需要AI(爱)

像会永生那样去学习,像明天就要死亡那样去生活。——圣雄甘地 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 AI(Gemini)ChromeDevTool🪜魔法接码平台因为,行文字数所限,有些概念可能会一带而过亦或者提供对应的学习…

MyBatis-Plus 查询不到数据,但使用 SQL 可以查询到数据的问题排查

目录 前言 一、问题描述 示例代码 二、排查步骤 1. 检查数据源配置 2. 检查实体类与数据库表结构 3. 检查 Mapper 接口 4. 检查 MyBatis-Plus 配置 5. 排查查询条件 6. 检查日志输出 7. 检查数据库连接问题 8. 检查全局配置和插件 三、解决方案 前言 在开发过程中&…

数学建模系列(4/4):Matlab建模实战

目录 引言 1. Matlab简介与安装 1.1 Matlab简介 1.2 Matlab的安装 2. Matlab基础操作 2.1 Matlab基础语法和常用命令 2.2 Matlab中的数据类型和数据结构 3. 用Matlab进行建模 3.1 矩阵运算与线性代数 矩阵运算 3.2 Matlab中的绘图功能 绘制2D图形 绘制3D图形 3.3…

黄历工具网/万年历/财神方位/日历/佛历/道历/24节气/PHP网站源码

黄历工具网/万年历/财神方位/日历/佛历/道历/24节气/PHP网站源码 演示地址&#xff1a; https://hl.caohongji.com/ 手机端地址&#xff1a; https://mhl.caohongji.com/ 客服&#xff1a; kkmp326 源码说明&#xff1a; 1、系统内的黄历宜忌、农历、日历、佛历、道…

【R语言】Linux-Ubuntu22系统下R语言的安装与卸载

文章目录 安装sudo安装conda安装编译安装----可安装最新版本1.进入Root权限 卸载1. 删除R语言的安装目录2. 删除R语言的配置文件 安装 有两种简便的方法可以在Linux下安装R&#xff0c;但版本都不够新 sudo安装 ### 更新信息并安装R环境&#xff1a; sudo apt update sudo a…