提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:秦林|2022-10-14 14:27:15.563|阅读 314 次
概述:本文带大家一起探讨如何在数据库中使用枚举值,包括如何存储、验证、插入和检索它们。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
在信息技术领域,俗称 IT 领域,枚举(ENUM)是一种特殊的数据类型,它封装了一组预定义的常量。因此,变量可能只保存枚举的其中一个预定义的值。常见的示例包括指南针方向(東、南、西、北)或星期几。
在数据库表中存储枚举有些复杂因素,其中之一是它们的值可能是数字或字母(即字符串)。而且,你可能希望阻止用户在表中添加任何不属于枚举集的允许值。我们将在今天的文章中解决这两个问题。
最基本的枚举包含一组从零开始的号值,每个值由一个常量表示,以下是 Java 的例子:
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
更复杂的枚举可能包含其他类型;字符串是最常见的类型,但也支持更复杂的对象。以下是一个用于表示不同环境 URL 的枚举(也是 Java):
public enum Environment { PROD("//prod.domain.com:1088/"), SIT("//sit.domain.com:2019/"), CIT("//cit.domain.com:8080/"), DEV("//dev.domain.com:21323/"); private String url; Environment(String envUrl) { this.url = envUrl; } public String getUrl() { return url; } }
通常,将枚举存储为数字序数值被认为是不好的做法,因为这会使调试和支持变得困难。而存储转换为字符串的实际枚举值通常更可取。为了说明这一点,假设我们有一个纸牌的枚举:
public enum Suit { Spade, Heart, Diamond, Club }
现在假设你是一名数据库从业人员,正在试图解读以下两个查询结果:
Name Suit ------------ ---- John Smith 2 Ian Boyd 1 Name Suit ------------ ------- John Smith Diamond Ian Boyd Heart
我认为你会同意后者更容易解释,因为第一个查询结果需要有源代码并找到分配给每个枚举成员的数值。
尽管存储字符串需要更多的磁盘空间,但枚举成员名称往往很短,而且硬盘价格很便宜,因此值得权衡取舍,让你的日常工作更轻松。
使用数值的另一个问题是它们难以更新。如果不强制使用旧数值,你无法轻松插入或重新排列成员。例如,将 Unknown值添加到 Suit 枚举将需要将其更新为:
public enum Suit { Unknown = 4, Heart = 1, Club = 3, Diamond = 2, Spade = 0 }
…以便保留已经存储在数据库中的旧数值。
现今许多数据库,包括 MySQL 和 SQL Server,都支持 ENUM 数据类型。ENUM 值指定为字符串,為了紧凑存储在存储时会自动编码为数字。
以下是 Navicat for MySQL 中的 MySQL 语句,用于创建表和填充包含衬衫和尺寸数据,以及获取中码衬衫数据的 SELECT 查询:
如果现在尝试插入一个无效的 ENUM 值,我们会得到以下错误:
尽管消息指出该值已被截断,但实际上并未插入数据。
在本文中,我们探讨了如何在数据库中使用枚举值,包括如何存储、验证、插入和检索它们。
有兴趣试用Navicat for MySQL吗?你可以免费使用 14 天!!!
Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。Navicat Premium产品相关内容,欢迎您直接访问慧都网了解更多详情。
数据库管理工具交流群:765665608 欢迎进群交流讨论
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。
Navicat for Oracle是一套超强的Oracle数据库系统管理工具,包括数据模型工具、数据或结构同步、导入或导出、和报表,令维护数据的进程更容易。
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
Navicat for MySQL 是一套管理和开发 MySQL 或 MariaDB 的理想解决方案。
Navicat PremiumNavicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。
Navicat for PostgreSQLNavicat for PostgreSQL是一套专为PostgreSQL设计的强大数据库管理及开发工具
Navicat for OracleNavicat for Oracle是一套超强的Oracle数据库系统管理工具,包括数据模型工具、数据或结构同步、导入或导出、和报表,令维护数据的进程更容易。
Navicat for SQL ServerNavicat for SQL Server 是一套专为 Mircosoft SQL Server设计的强大数据库管理及开发工具
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢