Navicat for PostgreSQL 是一套专为PostgreSQL设计的强大数据库管理及开发工具。它可以在PostgreSQL数据库7.5以上的版本中运行,并且支持大部份最新的PostgreSQL功能,包括触发器、函数检索及权限管理等。Navicat的的功能不仅可以满足专业开发人员的所有需求,而且对PostgreSQL的新手来说也相当容易学习。

数组和枚举

PostgreSQL 因其可扩展性和多功能性而备受欢迎,除了传统的整数和字符串之外,它还提供了多种数据类型。其中,包括数组和枚举,其为开发者提供了高级的数据建模能力。本文中,我们将深入研究这些复杂的数据类型,并通过免费的 dvdrental sample database 来展示他们的用法和好处。

数组(Array)类型

PostgreSQL 中的数组允许在单个数据库字段中存储多个值。在处理列表或数据集至关重要的场景中,此功能非常宝贵。让我们来看一个实例。假设我们想存储电影以及出演每部电影的演员。我们可以利用数组数据类型来高效地实现这一需求。首先,以下是创建和填充新的“films_with_actors”表的语句:

CREATE TABLE films_with_actors (
film_id SERIAL PRIMARY KEY,
title VARCHAR(255),
actors TEXT[]
);

INSERT INTO films_with_actors (title, actors) VALUES
('Inception', ARRAY['Leonardo DiCaprio', 'Joseph Gordon-Levitt']),
('The Shawshank Redemption', ARRAY['Tim Robbins', 'Morgan Freeman']);

在 Navicat 中,我们可以使用表设计器来创建表:

pg数据库 DataSourceProperties pg数据库int类型_PostgreSQL

请注意,如果我们在文本类型后面添加方括号“[]”,Navicat 会将其识别为数组类型,并在保存表时在“维度”字段中添加“1”,表示它是一个一维数组。

创建了表之后,我们将能够添加数据到其中。请确保使用大括号“{}”将数组值括起来,以告诉 Navicat 每个数组中包含哪些值:

pg数据库 DataSourceProperties pg数据库int类型_数据库_02

在查询中,我们可以通过在方括号内添加所需的索引来引用特定的数组元素。因此,“actors[1]”将获取数组的第一个值:

pg数据库 DataSourceProperties pg数据库int类型_postgresql_03

枚举(Enum)类型

“Enumerated”的缩写,Enum 类型允许开发人员为列定义一组固定的可能值。这增强了数据库模式中的数据完整性和清晰度。让我们通过向“films_with_actors”表添加一个“rating”列来举例说明这一点。我们可以使用以下 DDL 语句为电影评级定义一个枚举类型:

CREATE TYPE rating AS ENUM ('G', 'PG', 'PG-13', 'R', 'NC-17'); ALTER TABLE films_with_actors ADD COLUMN rating rating;

在 Navicat 中,我们可以在表设计器中点击列表上方的“添加字段”按钮来添加新列。在我们使用上面的 CREATE TYPE 语句创建了 rating Enum 之后,我们可以通过从类型下拉列表中选择“(Type)”项,然后从对象类型列表中选择 rating 项:

pg数据库 DataSourceProperties pg数据库int类型_PostgreSQL_04

表的 rating 列中,现在已包含一个我们已定义的枚举值的下拉列表:

pg数据库 DataSourceProperties pg数据库int类型_postgresql_05

总结

PostgreSQL 数组和枚举数据类型为开发人员提供了有效的工具来高效构建复杂的数据结构。通过利用这些高级功能,开发人员可以增强数据完整性,简化查询,并构建更健壮的数据库模式。在下周的博客中,我们将继续探索 PostgreSQL 的高级数据类型并研究 Range 类型。Range 类型提供了一种简洁的方式来表示单个数据库字段中的值范围,其在多个领域(从时间数据到数字间隔)都非常有用。

热门数据库管理工具:

DBeaver:全面支持JDBC的通用数据库管理和SQL客户端工具。

Navicat Premium:能同时连接多种数据库,方便管理的工具。

SQL DBA Bundle:专为SQL Server数据库开发设计的辅助工具包。

以上便是此次的推荐,用户在选择设计工具时,需要结合支持的数据库引擎、DDL/SQL脚本生成能力、数据库模型验证、逆向工程,以及合作功能、用户友好性、报告功能,以及质量的客户支持服务等因素考量。