当前位置: 首页 > article >正文

在 Navicat 17 中扩展 PostgreSQL 数据类型 - 枚举类型

枚举类型

在 Navicat Premium 17 中创建 PostgreSQL 的自定义数据类型的系列中,我们已经探索了多个主题。在 第 1 部分 ,我们学习了如何为 免费 DVD 租赁数据库 创建自定义域。上周,我们创建了一个复合类型,用于从用户定义的函数返回复杂数据。今天的博客将介绍枚举类型,它可以限制一组预定义选项的值。

复合类型

创建自定义域

快速了解枚举类型

枚举类型(ENUMs)允许我们定义一种具有静态、有序值集的数据类型。这对于列必须包含一组有限的预定义值的情况非常有用。

与其他 PostgreSQL 类型一样,枚举类型也是通过 CREATE TYPE 语句创建的。下面是一个定义了四种用户状态的枚举:

CREATE TYPE user_status AS ENUM ('active', 'inactive', 'suspended', 'pending');

下面是另一个定义电影分级的例子:

CREATE TYPE movie_rating AS ENUM ('G', 'PG', 'PG-13', 'R', 'NC-17');

定义完成后,我们可以在表格中使用自定义类型,如下所示:

CREATE TABLE films (
  film_id SERIAL PRIMARY KEY,
  title VARCHAR(255),
  rating movie_rating
);

在 Navicat 17 中创建枚举类型

定义枚举类型更简单的方法是在 Navicat 中使用相关的基于图形用户界面的工具。你可以在 Navicat Premium 17 和 Navicat for PostgreSQL 17 中找到它们。若要访问“类型”工具,仅需单击主工具栏中的 “其他”,然后从下拉菜单中选择 “类型”:

type_menu_command (33K)

这将弹出“对象”窗格,我们将看到现有类型的列表。若要创建新类型,请单击“对象”工具栏中“新建类型”项旁边的箭头,然后从弹出式菜单中选择“枚举”项:

enum_menu_item (38K)

这将在新标签页中启动类型设计器。在“常规”选项卡上将有一个空单元格,我们可以在其中输入枚举的第一个标签,即 “G”:

enum_type_label (21K)

我们可以点击“添加标签”来添加新行,输入下一个标签。输入所有标签后,“常规”选项卡应如下所示:

completed_type_labels (25K)

在单击“保存”按钮之前,我们可以通过单击“SQL 预览”选项卡查看 Navicat 将生成的语句:

enum_type_sql_preview (19K)

注意到类型名称是“无标题”,因为我们还没有保存定义。这是意料之中的。

点击“保存”按钮后,我们将看到一个“另存为”对话框,在此我们可以为类型命名为“film_rating”:

enum_type_save_as_dialog (34K)

在表定义中使用 film_rating 类型

现在,我们可以像使用其他 PostgreSQL 数据类型一样使用“film_rating”类型。例如,我们可以将表列设置为自定义类型。只要现有表的数据值符合我们的枚举值,我们甚至可以更改它的类型。事实上,将列的类型从通用的 VARCHAR 变为更严格的 ENUM,是快速确定列是否包含无效值的有效方法。

如果我们在 Navicat 表设计器中打开“film”表,我们可以通过从“类型”下拉菜单中选择“(Type)”,将“rating”列设置为我们的“film_rating”类型, 即将“对象类型”设置为“film_rating”,

film_table_with_enum_type (119K)

同时确保“排序规则”项为空。

如果列中不包含任何无效值,我们就可以保存表定义,而不会出现任何错误或警告。

将列类型设置为 ENUM 的优点之一是 Navicat 将提供一个下拉菜单来选择值:

adding_a_new_row_to_the_film_table (48K)

结语

在今天的博客中,我们使用 Navicat Premium 17 的类型工具创建了一个枚举类型,并更新了一个现有表以使用我们的自定义类型来约束列值。第四部分将继续介绍范围类型。

PostgreSQL 相关文章

在 Navicat 17 中扩展 PostgreSQL 数据类型 | 创建自定义域

为什么在下一个 IT 项目中选择使用 PostgreSQL

为什么说Navicat与PostgreSQL是数据库行业的中流砥柱?

探索 PostgreSQL 的高级数据类型 | 数组和枚举

探索 PostgreSQL 的高级数据类型 | DML/SQL 语句

PostgreSQL 的实体化视图介绍

PostgreSQL 实体化视图的使用

PostgreSQL 中的多版本并发控制

Navicat 面向 PostgreSQL 查询超时的工具解决方案

在 Navicat Monitor 3 中查看 PostgreSQL 实例详细信息

使用 Navicat Monitor 3 跟踪 PostgreSQL 实例查询

使用 Navicat Monitor 3.0 监控 PostgreSQL


http://www.kler.cn/a/542717.html

相关文章:

  • vue 主子表加校验问题
  • Android Studio集成讯飞SDK过程中在配置Project的时候有感
  • CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据)
  • 2024.1.2版本Android Studio gradle下载超时问题处理
  • 从零开始:使用Jenkins实现高效自动化部署
  • Visual Studio踩过的坑
  • 信息安全之网络安全
  • CSS 表单 实现响应式布局
  • DeepSeek影响网络安全行业?
  • UWB功耗大数据插桩调研
  • 深度学习的图像生成
  • redo和binlog区别
  • SQLite 约束
  • Nat Python:用于自然语言处理的Python库
  • 【网络安全】无线安全协议的演变
  • VeryReport和FastReport两款报表软件深度分析对比
  • DeepSeek做赛车游戏
  • C++智能指针的使用
  • C语言————快速幂
  • java项目之直销模式下家具工厂自建网站源码(ssm+mysql)
  • npm 常用命令大全
  • 数据总线/一致性维度/总线矩阵
  • Mac(m1)本地部署deepseek-R1模型
  • Ubuntu学习---跟着绍发学成后自学教程(附带优秀链接)
  • vue3:template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写?
  • git rebase 和 git merge的区别