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' ] );
插入应该可以成功运行。
第三列(即联系人)的值已作为数组插入。这是通过使用 ARRAY 构造函数实现的。在本例中,我们用方括号 [] 将它们括起来。员工 Alice John 有两个联系人。
我们仍然可以使用花括号 {},如下所示:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
该命令应该可以成功运行。
上述语句将在 Employees 表中插入两行。使用花括号时,数组括在单引号 (') 中,而文本数组项括在双引号 (") 中。
查询数组数据
要查询数组元素,我们使用 SELECT 语句。要查看 Employees 表的内容,我们运行以下命令:
SELECT * FROM Employees;
这将返回以下内容:
数组列(即 contact)的元素用花括号 {} 括起来。要访问数组元素本身,我们在方括号 [] 内添加下标。数组中的第一个元素位于位置 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 排列
您可以更新数组中的所有元素或单个元素。以下是 Employees 表的内容:
让我们更新员工 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)
- 在左侧的导航栏中,单击数据库。
- 点击演示按钮。
步骤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) 要在查询中使用花括号,请在查询编辑器中键入以下查询:
INSERT INTO Employees VALUES ( 2, 'Kate Joel', '{"(408)-783-5731"}' ), ( 3, 'James Bush', '{"(408)-745-8965","(408)-567-78234"}' );
然后点击“执行”按钮:
查询数组数据
步骤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) 在查询编辑器中输入以下命令以检查更改是否成功,然后单击“执行”按钮:
SELECT * FROM Employees;
它应该返回以下内容:
在搜索中 PostgreSQL 排列
步骤1) 在查询编辑器中键入以下查询:
SELECT name, contact FROM Employees WHERE '(408)-783-5731' = ANY (contact);
步骤2) 单击执行按钮。
它应该返回以下内容:
扩展数组
步骤1) 在查询编辑器中键入以下查询:
SELECT name, unnest(contact) FROM Employees;
步骤2) 单击执行按钮。
它应该返回以下内容:































