PostgreSQL 数组:函数、类型、示例
什么是 PostgreSQL 大批?
In PostgreSQL,我们可以将列定义为有效数据类型的数组。数据类型可以是内置、用户定义或枚举类型。除此之外,数组在以下方面发挥着重要作用: PostgreSQL.
每一个对应的 PostgreSQL 数据类型带有相应的数组类型。例如,整数数据类型有整数[]数组类型,字符数据类型有字符[]数组类型等。
创造 PostgreSQL 阵列
在以下示例中,我们将创建一个名为 Employees 的表,其中联系人列定义为文本数组:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
命令应该可以成功运行。
插入 PostgreSQL 数组值
现在让我们 插 将值放入上表中:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
插入应该可以成功运行。
第三列(即 contact)的值已作为数组插入。这是通过使用 ARRAY 构造函数实现的。
在此示例中,我们将它们括在方括号 [] 中。我们有员工 Alice John 的两个联系人。
我们仍然可以使用花括号 {},如下所示:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
该命令应该可以成功运行。
上述语句将在 Employees 表中插入两行。使用花括号时,数组括在单引号 (') 中,而文本数组项括在双引号 (") 中。
查询数组数据
要查询数组的元素,我们使用 SELECT 语句。
要查看员工表的内容,我们运行以下命令:
SELECT * FROM Employees;
这将返回以下内容:
数组列的元素,即联系人,已被括在花括号 {} 中。
要访问数组元素本身,我们在方括号 [] 内添加下标。数组中的第一个元素位于位置 1。
例如,我们需要获取员工姓名,并且对于有多个联系人的员工,仅获取他们的第一个联系人。我们可以通过 contact[1] 来访问它。
让我们看看这个:
SELECT name, contact[1] FROM Employees;
这将返回以下内容:
我们可以将 SELECT 语句与 WHERE 子句一起使用,根据数组列过滤行。
例如,要查看第二个联系人为 (408)-567-78234 的员工,我们可以运行以下命令:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
这将返回以下内容:
修改 PostgreSQL 排列
您可以更新数组的全部元素或单个元素。
以下是员工表的内容:
让我们更新员工 James Bush 的第二个电话号码,他的 ID 为 3:
运行以下命令:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
该命令应该可以成功运行:
让我们查询表来检查更改是否成功:
修改成功。
在搜索中 PostgreSQL 排列
目前,我们的员工表如下:
假设我们需要知道联系人 (408)-783-5731 的所有者,而不管其在联系人数组中的位置如何,我们可以使用 ANY() 函数,如下所示:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
这将返回以下内容:
扩展数组
我们可以将数组的值拆分成行。此过程称为数组扩展。
在员工表的示例中,有些员工在联系人数组中有两个联系人。我们可以将它们拆分为单独的行。
PostgreSQL 提供了可用于此目的的 unnest() 函数。
例如:
SELECT name, unnest(contact) FROM Employees;
这将返回以下内容:
员工 Alice John 和 James Bush 有两个联系人。我们可以将其分成不同的行。
使用 pgAdmin
创造 PostgreSQL 阵列
要通过 pgAdmin 完成相同操作,请执行以下操作:
步骤1) 登录您的 pgAdmin 帐户。
步骤2)
- 从左侧导航栏中单击 rbases。
- 点击演示按钮
步骤3) 在查询编辑器中键入查询以创建员工表:
CREATE TABLE Employees ( id int PRIMARY KEY, name VARCHAR (100), contact TEXT [] );
步骤4) 单击执行按钮。
插入 PostgreSQL 数组值
步骤1) 在查询编辑器中键入以下查询:
INSERT INTO Employees VALUES ( 1, 'Alice John', ARRAY [ '(408)-743-9045', '(408)-567-7834' ] );
步骤2) 单击执行按钮:
步骤3)
在查询中使用花括号
步骤1) 在查询编辑器中键入以下查询:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
步骤2)单击执行按钮:
查询数组数据
步骤1) 要查看 Employees 表的内容,请在查询编辑器中键入以下查询:
SELECT * FROM Employees;
步骤2) 单击执行按钮:
它应该返回以下内容:
步骤3) 要查看员工的第一个联系人:
- 在查询编辑器中键入以下查询:
SELECT name, contact[1] FROM Employees;
- 单击执行按钮。
它应该返回以下内容:
步骤4) 要将 SELECT 语句与 WHERE 子句结合起来:
- 在查询编辑器中输入以下命令:
SELECT name FROM Employees WHERE contact [ 2 ] = '(408)-567-78234';
- 单击执行按钮。
它应该返回以下内容:
修改 PostgreSQL 排列
步骤1) 要更新 ID 为 3 的用户的第二个联系人,请运行以下命令:
UPDATE Employees SET contact [ 2 ] = '(408)-589-89347' WHERE id = 3;
步骤2) 单击执行按钮。
步骤3)
1.在查询编辑器中输入以下命令,检查更改是否成功:
SELECT * FROM Employees;
2.单击执行按钮。
它应该返回以下内容:
在搜索中 PostgreSQL 排列
步骤1) 在查询编辑器中键入以下查询:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
步骤2) 单击执行按钮。
它应该返回以下内容:
扩展数组
步骤1) 在查询编辑器中键入以下查询:
SELECT name, unnest(contact) FROM Employees;
步骤2) 单击执行按钮。
它应该返回以下内容:
总结
- PostgreSQL 允许我们将表列定义为数组类型。
- 数组必须是有效的 数据类型 例如整数、字符或用户定义类型。
- 要将值插入数组列,我们使用 ARRAY 构造函数。
- 如果数组列的同一行中有多个元素,则第一个元素位于位置 1。
- 可以通过传递方括号 [] 内的下标来访问每个值。
- 可以使用 SELECT 语句检索数组的元素。
- 数组列的值可以用方括号 [] 或花括号 {} 括起来。
- 我们可以使用 ANY() 函数搜索数组列值。