在 Navicat 17 中扩展 PostgreSQL 数据类型 - 范围类型
范围类型
PostgreSQL 是市场上最灵活的数据库之一,这已不是什么秘密。事实上,PostgreSQL 的可扩展性和丰富的功能集使 PostgreSQL 近期已超越 MySQL,成为最受开发人员推崇和最受欢迎的数据库系统。在这个使用 Navicat Premium 17 在 PostgreSQL 创建自定义数据类型的系列中,我们已经探索了一些选项,包括自定义域、复合类型和枚举类型。本周博客的主题是范围类型,当你需要处理连续区间或数值范围时,范围类型特别有用。
复合类型
创建自定义域
枚举类型
范围类型的简要说明
PostgreSQL 中的范围类型提供了一种处理连续区间值的方法。因此,一个范围可以包括 10 美元到 20 美元之间的所有产品价格。通过这些范围,你可以处理在其范围内的任何值,从而轻松检查计划冲突或价格匹配等问题。在数据库中,如果需要处理连续的时间跨度、数字区间或任何其他连续数据,范围尤其有用。
例如,在一家电影院的数据库中,你可以使用范围来表示放映时间,确保没有两部电影在同一影院重映。或者,在酒店预订系统中,范围可以跟踪客房空房日期,方便检查空房冲突。范围类型特别有用,因为PostgreSQL可以处理所有比较和操作这些区间的复杂逻辑,提供内置操作来检查范围之间的重叠、包含和交叉。
在下一节中,我们将使用 Navicat Premium 17 和 免费 DVD 租借数据库 举几个实际例子。
定义电影放映时间范围
在考虑自定义范围类型之前,我们应该确认下 PostgreSQL 的内置范围类型是否能实现我们的目标。这些类型包括:
- int4range:整数范围
- int8range:bigint 的范围
- numrange:数字范围
- tsrange: 不含时区的时间戳范围
- tstzrange:包含时区的时间戳范围
- daterange:日期范围
虽然 DVD Rental 数据库中的电影放映时间是以整数形式存储的,但当我们有特定的业务需求而内置类型又无法满足时,创建我们自己的范围类型还是很有意义的。例如,如果我们要跟踪具有特殊验证规则的影片放映时间范围:
-- Creating a custom minutes range type with specific validation CREATE TYPE runtime_range AS RANGE ( subtype = integer, subtype_diff = int4mi ); CREATE TABLE film_runtime_categories ( category_name VARCHAR(50), typical_runtime runtime_range, CHECK (lower(typical_runtime) >l= 30 AND upper(typical_runtime) <= 240) ); -- Adding rows to the table INSERT INTO film_runtime_categories VALUES ('Short Film', '[30,45]'); INSERT INTO film_runtime_categories VALUES ('Feature Film', '[75,180]');
在 Navicat 17 中创建范围类型
定义自定义类型的更简单方法是使用 Navicat 基于图形用户界面的工具。你可以在 Navicat Premium 17 和 Navicat for PostgreSQL 17 中找到它们。若要访问类型工具,只需单击主工具栏中的“其他”,然后从下拉菜单中选择“类型”:
这将弹出“对象”窗格,我们将看到现有类型的列表。若要创建新类型,请单击“对象”工具栏中“新建类型”项旁边的箭头,然后从上下文菜单中选择“范围”项:
范围类型设计器有三个选项卡:常规、注释和 SQL 预览。在常规选项卡上,我们需要提供的主要信息是“子类型”和“子类型差异”。我们的类型将以 int4 为基础,如下所示:
在单击“保存”按钮之前,我们可以通过单击“SQL 预览”选项卡查看 Navicat 将生成的语句:
注意到类型名称是“无标题”,因为我们还没有保存定义。这是意料之中的。
点击“保存”按钮后,我们将看到一个“另存为”对话框,在此我们可以将类型命名为 “runtime_range ”:
现在,我们可以像使用其他 PostgreSQL 数据类型一样使用“runtime_range”类型。例如,如果我们创建了上面例子中的“film_runtime_categories”表,我们可以从“对象类型”下拉菜单中选择“typical_runtime”列,将其设置为我们的自定义类型:
然后,我们就可以在“检查”选项卡上添加字段验证:
结语
在今天的博客中,我们使用 Navicat Premium 17 的类型工具创建了一个范围类型,并创建了一个以自定义类型为特色的新表。在第 5 部分,我们将通过扩展基本类型来结束本系列。
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