彩票走势图

数据库管理工具Navicat Premium使用教程:在数据库中存储枚举

翻译|使用教程|编辑:秦林|2022-10-14 14:27:15.563|阅读 314 次

概述:本文带大家一起探讨如何在数据库中使用枚举值,包括如何存储、验证、插入和检索它们。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>


Navicat Premium正版试用下载

在信息技术领域,俗称 IT 领域,枚举(ENUM)是一种特殊的数据类型,它封装了一组预定义的常量。因此,变量可能只保存枚举的其中一个预定义的值。常见的示例包括指南针方向(東、南、西、北)或星期几。

在数据库表中存储枚举有些复杂因素,其中之一是它们的值可能是数字或字母(即字符串)。而且,你可能希望阻止用户在表中添加任何不属于枚举集的允许值。我们将在今天的文章中解决这两个问题。

1、探索枚举值

最基本的枚举包含一组从零开始的号值,每个值由一个常量表示,以下是 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 }

…以便保留已经存储在数据库中的旧数值。

2、验证数据库中的枚举值

现今许多数据库,包括 MySQL 和 SQL Server,都支持 ENUM 数据类型。ENUM 值指定为字符串,為了紧凑存储在存储时会自动编码为数字。

以下是 Navicat for MySQL 中的 MySQL 语句,用于创建表和填充包含衬衫和尺寸数据,以及获取中码衬衫数据的 SELECT 查询:

如果现在尝试插入一个无效的 ENUM 值,我们会得到以下错误:

尽管消息指出该值已被截断,但实际上并未插入数据。

3、总结

在本文中,我们探讨了如何在数据库中使用枚举值,包括如何存储、验证、插入和检索它们。

有兴趣试用Navicat for MySQL吗?你可以免费使用 14 天!!!

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。Navicat Premium产品相关内容,欢迎您直接访问慧都网了解更多详情。


数据库管理工具交流群:765665608   欢迎进群交流讨论

正版数据库管理软件下载、购买、授权咨询,请点这里!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
Navicat for MySQL

Navicat for MySQL 是一套管理和开发 MySQL 或 MariaDB 的理想解决方案。

Navicat Premium

Navicat Premium 是一套数据库管理工具,让你使用一个程序即可同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。

Navicat for PostgreSQL

Navicat for PostgreSQL是一套专为PostgreSQL设计的强大数据库管理及开发工具

Navicat for Oracle

Navicat for Oracle是一套超强的Oracle数据库系统管理工具,包括数据模型工具、数据或结构同步、导入或导出、和报表,令维护数据的进程更容易。

Navicat for SQL Server

Navicat for SQL Server 是一套专为 Mircosoft SQL Server设计的强大数据库管理及开发工具

title
title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP