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数组值
成功创建
person_details 表后,我们将使用
> INSERT 命令的帮助。
INSERT INTO person_details (person_name, mobile_number)
VALUES('Maria Smith',ARRAY [ '(444)-333-1234','(555)-333-5432' ]);
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示值已成功插入
person_details 表。
在上述插入命令中,我们已经使用
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数组数据值
创建并插入
person_details 表的值之后,我们将使用
SELECT 命令返回
person_details 的所有行 strong>表:
SELECT person_name, mobile_number
FROM person_details;
输出
成功执行上述命令后,我们将获得以下输出,该输出显示
person_details
中的所有数据 表:
默认情况下,如果我们使用借助
方括号[]中的下标,,PostgreSQL对数组元素使用了
基于一个编号的数字,这意味着第一个数组元素以
数字1 开头>。
假设我们需要返回
人的名字和第一个
mobile_number ,如下面的命令所示:
SELECT person_name, mobile_number[1]
FROM person_details;
输出
在执行上述命令时,我们将得到以下结果,该结果显示了用户的第一个
手机号码
person_details 表。
要使用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数组
PostgreSQL为我们提供了来更新整个数组或数组的所有元素。
以下命令用于更新
David smith 的
第二个电话号码。
>
UPDATE person_details
SET mobile_number [2] = '(308)-859-54378'
WHERE ID = 4;
输出
执行上述命令后,我们将获得以下消息窗口,该窗口显示特定值已成功更新。
要整体更新数组,可以使用以下命令:
UPDATE person_details
SET mobile_number = '{"(308)-859-54378"}'
WHERE ID = 4;
输出
执行上述命令后,我们将获得以下消息窗口,该消息窗口表示整个数组:
此后,我们将使用以下命令;我们将在
SELECT 命令的帮助下检查更新后的值:
SELECT person_name, Mobile_number
FROM person_details
WHERE id = 4;
输出
成功执行上述命令后,我们将获得以下输出,其中显示指定的更新值。
扩展PostgreSQL数组数据类型
要将数组扩展为行列表,PostgreSQL提供
unnest()函数。
让我们看一个示例,以了解如何使用
unnest()函数扩展数组:
在下面的示例中,以下命令扩展了mobile_number数组的所有手机号码。
SELECT person_name,
unnest(mobile_number)
FROM person_details;
输出
执行上述命令后,我们将获得以下输出,该命令将展开的数组显示为行列表。
在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数组数据类型部分中,我们学习了以下主题:
PostgreSQL数组数据类型用于存储指定列的数组值。
我们已使用 WHERE子句中的 Array元素来过滤指定表中的检索行。
我们使用了不同的Array函数;例如, ANY()函数用于在PostgreSQL数组中搜索。
unnest()函数用于将数组扩展为处理特定表的Array值的行的列表。