PostgreSQL教程

PostgreSQL 数组

在本节中,我们将了解 PostgreSQL数组数据类型的工作原理,数组数据的示例类型,以及一些可访问的数组函数,例如 unnest(),ANY(),这些函数可帮助我们更有效地处理 数组值。我们还看到了在 WHERE 子句中使用数组元素的示例。

什么是PostgreSQL数组数据类型?

在 PostgreSQL ,Array数据类型发挥了重要作用。众所周知,每种数据类型都有其伴随数组类型,例如 character 具有 character [] 数组类型, integer 具有 整数[] 数组类型,等等。
PostgreSQL允许我们将列指定为任何有效 数据类型的数组,其中涉及 用户定义的数据类型,枚举数据类型和内置数据类型
注意: PostgreSQL在后台生成了一个一致的数组类型供我们描述我们的数据类型。

PostgreSQL数组数据类型的语法

PostgreSQL数组数据类型的语法如下:
variable_name DATA TYPE[];

PostgreSQL数组数据类型的示例

让我们看看示例示例,以了解 PostgreSQL数组数据类型的工作原理。
我们将在CREATE命令的帮助下以 person_details 的形式创建一个新表,并使用 INSERT命令。

创建PostgreSQL数组表

person_details >表包含各种列,例如 id,person_name和Mobile_numbers ,对于 Mobile_number 列,我们使用 一维数组包含一个人可能拥有的几个手机号码。
CREATE TABLE person_details (
    id serial PRIMARY KEY,
    person_name VARCHAR (200) ,
    mobile_numbers TEXT []
);
输出
在执行上述命令时,我们将获得以下消息窗口,其中显示 person_details 表已成功创建到 Organization 数据库中。
PostgreSQL Array

插入PostgreSQL数组值

成功创建 person_details 表后,我们将使用 > INSERT 命令的帮助。
INSERT INTO person_details (person_name, mobile_number)
VALUES('Maria Smith',ARRAY [ '(444)-333-1234','(555)-333-5432' ]);
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示值已成功插入 person_details 表。
PostgreSQL Array
在上述插入命令中,我们已经使用 ARRAY构造函数创建了一个数组并将其添加到 Person_details 表中。
我们还可以使用 花括号 {}而不是方括号[],如下面的命令所示:
INSERT INTO person_details (person_name, mobile_number)
VALUES('Mike Taylor','{"(444)-333-1234"}'),
('Emma Garcia','{"(568)-333-5678"}'),
('David Smith','{"(444)-333-7658","(308)-589-23458"}');
输出
执行上面的命令后,我们将获得以下消息窗口,该窗口显示三个值已成功插入 person_details 表。
PostgreSQL Array
注意: 我们在上面的命令中看到,当我们使用花括号{}时,我们使用了单引号''将数组括起来,并使用了双引号""用于封闭文本数组项。

选择PostgreSQL数组数据值

创建并插入 person_details 表的值之后,我们将使用 SELECT 命令返回 person_details 的所有行 strong>表:
SELECT person_name, mobile_number
FROM person_details;
输出
成功执行上述命令后,我们将获得以下输出,该输出显示 person_details 中的所有数据 表:
PostgreSQL Array
默认情况下,如果我们使用借助 方括号[]中的下标,,PostgreSQL对数组元素使用了 基于一个编号的数字,这意味着第一个数组元素以 数字1 开头>。
假设我们需要返回 人的名字和第一个 mobile_number ,如下面的命令所示:
SELECT person_name, mobile_number[1]
FROM person_details;
输出
在执行上述命令时,我们将得到以下结果,该结果显示了用户的第一个 手机号码 person_details 表。
PostgreSQL Array

要使用where子句查找PostgreSQL数组元素

要过滤行,我们可以在 WHERE子句 作为条件。
在下面的示例中,我们将使用以下命令来识别具有 mobile_number的用户(308)-589-23458 作为第二个手机号码:
SELECT person_name
FROM person_details
WHERE mobile_number[2]='(308)-589-23458';
输出
成功执行上述命令后,我们将获得以下输出,其中显示具有两个以上mobile_numbers的 person_name
PostgreSQL Array

更改PostgreSQL数组

PostgreSQL为我们提供了来更新整个数组或数组的所有元素。
以下命令用于更新 David smith 第二个电话号码
>
UPDATE person_details
SET mobile_number [2] = '(308)-859-54378'
WHERE ID = 4;
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示特定值已成功更新。
PostgreSQL Array
要整体更新数组,可以使用以下命令:
UPDATE person_details
SET mobile_number = '{"(308)-859-54378"}'
WHERE ID = 4;
输出
执行上述命令后,我们将获得以下消息窗口,该消息窗口表示整个数组:
PostgreSQL Array
此后,我们将使用以下命令;我们将在 SELECT 命令的帮助下检查更新后的值:
SELECT person_name, Mobile_number
FROM person_details
WHERE id = 4;
输出
成功执行上述命令后,我们将获得以下输出,其中显示指定的更新值。
PostgreSQL Array

扩展PostgreSQL数组数据类型

要将数组扩展为行列表,PostgreSQL提供 unnest()函数。
让我们看一个示例,以了解如何使用 unnest()函数扩展数组:
在下面的示例中,以下命令扩展了mobile_number数组的所有手机号码。
SELECT person_name,
unnest(mobile_number)
FROM person_details;
输出
执行上述命令后,我们将获得以下输出,该命令将展开的数组显示为行列表。
PostgreSQL Array

在PostgreSQL数组中搜索

我们可以使用 ANY() 函数,以便我们确定谁具有以下 mobile_number (555)-333-5432,而与mobile_number数组的位置无关,如以下命令所示:
SELECT person_name, mobile_number
FROM person_details
WHERE '(555)-333-5432' = ANY (mobile_number);
输出
执行上述命令后,我们将得到以下结果:
PostgreSQL Array

概述

PostgreSQL数组数据类型部分中,我们学习了以下主题:
PostgreSQL数组数据类型用于存储指定列的数组值。 我们已使用 WHERE子句中的 Array元素来过滤指定表中的检索行。 我们使用了不同的Array函数;例如, ANY()函数用于在PostgreSQL数组中搜索。 unnest()函数用于将数组扩展为处理特定表的Array值的行的列表。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4