PostgreSQL - Array类型

PostgreSQL - Array类型 首页 / PostgreSQL入门教程 / PostgreSQL - Array类型

 postgreesql 中,数组数据类型发挥了重要作用。如无涯教程所知,每个数据类型都有其伴随数组类型,例如character具有character[] 数组类型,integer有一个integer[] 数组类型等。

数组类型语法

PostgreSQL Array数据类型的语法如下:

variable_name DATA TYPE[];

数组类型示例

让无涯教程看一些示例示例,以了解 PostgreSQL Array数据类型的工作方式。创建一个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

插入数组值

成功创建 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


选择数组数据值

创建并插入 person_details 表的值之后,无涯教程将使用 SELECT 命令返回 person_details 表的所有行:

SELECT person_name, mobile_number
FROM person_details;

成功执行上述命令后,无涯教程将获得以下输出,其中显示 person_details 表中存在的所有数据:

PostgreSQL Array

默认情况下,如果无涯教程在方括号[]中使用下标访问数组元素, PostgreSQL将对数组元素使用基于基点的编号,这意味着第一个数组元素以数字1 开头。

假设无涯教程需要返回person_name和第一个 mobile_number ,如下面的命令所示:

SELECT person_name, mobile_number[1]
FROM person_details;

执行上述命令后,无涯教程将获得以下结果,该结果显示 person_details 表中某人的第一个手机号码

PostgreSQL Array

使用where子句查数组元素

在以下示例中,无涯教程将使用以下命令来标识具有 mobile_number(308)-589-23458 作为第二个手机号码的那些人:

SELECT person_name
FROM person_details
WHERE mobile_number[2]='(308)-589-23458';

在成功执行上述命令后,无涯教程将获得以下输出,该输出显示 person_name ,具有两个以上的mobile_numbers。

PostgreSQL Array

更改数组值

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提供了 unnest()函数。

让无涯教程看一个示例,以了解如何使用 unnest()函数扩展数组:

在以下示例中,以下命令扩展了Mobile_Number 数组的所有手机号码。

SELECT person_name,
unnest(mobile_number)
FROM person_details;

执行上述命令后,无涯教程将获得以下输出,该命令将展开的数组显示为行列表。

PostgreSQL Array

在数组中搜索

如果要确定谁具有以下 mobile_number (555)-333-5432,无涯教程可以使用 ANY()函数,而与mobile_number数组的位置无关,如下所示:下面的命令:

SELECT person_name, mobile_number
FROM person_details
WHERE '(555)-333-5432' = ANY (mobile_number);

执行完上述命令后,无涯教程将得到以下结果:

PostgreSQL Array

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Service Mesh实践指南 -〔周晶〕

如何设计一个秒杀系统 -〔许令波〕

DDD实战课 -〔欧创新〕

接口测试入门课 -〔陈磊〕

流程型组织15讲 -〔蒋伟良〕

大数据经典论文解读 -〔徐文浩〕

超级访谈:对话汤峥嵘 -〔汤峥嵘〕

AI大模型企业应用实战 -〔蔡超〕

互联网人的数字化企业生存指南 -〔沈欣〕

好记忆不如烂笔头。留下您的足迹吧 :)