在 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 数据库中。
成功创建 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 表中。
创建并插入 person_details 表的值之后,无涯教程将使用 SELECT 命令返回 person_details 表的所有行:
SELECT person_name, mobile_number FROM person_details;
成功执行上述命令后,无涯教程将获得以下输出,其中显示 person_details 表中存在的所有数据:
默认情况下,如果无涯教程在方括号[]中使用下标访问数组元素, PostgreSQL将对数组元素使用基于基点的编号,这意味着第一个数组元素以数字1 开头。
假设无涯教程需要返回person_name和第一个 mobile_number ,如下面的命令所示:
SELECT person_name, mobile_number[1] FROM person_details;
执行上述命令后,无涯教程将获得以下结果,该结果显示 person_details 表中某人的第一个手机号码。
在以下示例中,无涯教程将使用以下命令来标识具有 mobile_number(308)-589-23458 作为第二个手机号码的那些人:
SELECT person_name FROM person_details WHERE mobile_number[2]='(308)-589-23458';
在成功执行上述命令后,无涯教程将获得以下输出,该输出显示 person_name ,具有两个以上的mobile_numbers。
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提供了 unnest()函数。
让无涯教程看一个示例,以了解如何使用 unnest()函数扩展数组:
在以下示例中,以下命令扩展了Mobile_Number 数组的所有手机号码。
SELECT person_name, unnest(mobile_number) FROM person_details;
执行上述命令后,无涯教程将获得以下输出,该命令将展开的数组显示为行列表。
如果要确定谁具有以下 mobile_number (555)-333-5432,无涯教程可以使用 ANY()函数,而与mobile_number数组的位置无关,如下所示:下面的命令:
SELECT person_name, mobile_number FROM person_details WHERE '(555)-333-5432' = ANY (mobile_number);
执行完上述命令后,无涯教程将得到以下结果:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)