PostgreSQL 数组:函数、类型、示例

什么是 PostgreSQL 大批?

In PostgreSQL,我们可以将列定义为有效数据类型的数组。数据类型可以是内置、用户定义或枚举类型。除此之外,数组在以下方面发挥着重要作用: PostgreSQL.

每一个对应的 PostgreSQL 数据类型带有相应的数组类型。例如,整数数据类型有整数[]数组类型,字符数据类型有字符[]数组类型等。

创造 PostgreSQL 阵列

在以下示例中,我们将创建一个名为 Employees 的表,其中联系人列定义为文本数组:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

命令应该可以成功运行。

创造 PostgreSQL 阵列

插入 PostgreSQL 数组值

现在让我们 将值放入上表中:

INSERT INTO Employees 
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

插入应该可以成功运行。

插入 PostgreSQL 数组值

第三列(即 contact)的值已作为数组插入。这是通过使用 ARRAY 构造函数实现的。

在此示例中,我们将它们括在方括号 [] 中。我们有员工 Alice John 的两个联系人。

我们仍然可以使用花括号 {},如下所示:

INSERT INTO Employees 
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   ( 
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

该命令应该可以成功运行。

插入 PostgreSQL 数组值

上述语句将在 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 排列

您可以更新数组的全部元素或单个元素。

以下是员工表的内容:

修改 PostgreSQL 排列

让我们更新员工 James Bush 的第二个电话号码,他的 ID 为 3:

修改 PostgreSQL 排列

运行以下命令:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

该命令应该可以成功运行:

修改 PostgreSQL 排列

让我们查询表来检查更改是否成功:

修改 PostgreSQL 排列

修改成功。

在搜索中 PostgreSQL 排列

目前,我们的员工表如下:

在搜索中 PostgreSQL 排列

假设我们需要知道联系人 (408)-783-5731 的所有者,而不管其在联系人数组中的位置如何,我们可以使用 ANY() 函数,如下所示:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

这将返回以下内容:

在搜索中 PostgreSQL 排列

扩展数组

我们可以将数组的值拆分成行。此过程称为数组扩展。

在员工表的示例中,有些员工在联系人数组中有两个联系人。我们可以将它们拆分为单独的行。

PostgreSQL 提供了可用于此目的的 unnest() 函数。

例如:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

这将返回以下内容:

扩展数组

员工 Alice John 和 James Bush 有两个联系人。我们可以将其分成不同的行。

使用 pgAdmin

创造 PostgreSQL 阵列

要通过 pgAdmin 完成相同操作,请执行以下操作:

步骤1) 登录您的 pgAdmin 帐户。

步骤2)

  1. 从左侧导航栏中单击 rbases。
  2. 点击演示按钮

创造 PostgreSQL 使用 pgAdmin 的数组

步骤3) 在查询编辑器中键入查询以创建员工表:

CREATE TABLE Employees (
   id int PRIMARY KEY,
   name VARCHAR (100),
   contact TEXT []
);

步骤4) 单击执行按钮。

创造 PostgreSQL 使用 pgAdmin 的数组

插入 PostgreSQL 数组值

步骤1) 在查询编辑器中键入以下查询:

INSERT INTO Employees 
VALUES
   (
      1,
      'Alice John',
      ARRAY [ '(408)-743-9045',
      '(408)-567-7834' ]
   );

步骤2) 单击执行按钮:

插入 PostgreSQL 数组值

步骤3)

在查询中使用花括号

步骤1) 在查询编辑器中键入以下查询:

INSERT INTO Employees 
VALUES
   (
    2,
      'Kate Joel',
      '{"(408)-783-5731"}'
   ),
   ( 
      3,
      'James Bush',
      '{"(408)-745-8965","(408)-567-78234"}'
   );

步骤2)单击执行按钮:

插入 PostgreSQL 数组值

查询数组数据

步骤1) 要查看 Employees 表的内容,请在查询编辑器中键入以下查询:

SELECT * FROM Employees;

步骤2) 单击执行按钮:

使用 pgAdmin 查询数组数据

它应该返回以下内容:

使用 pgAdmin 查询数组数据

步骤3) 要查看员工的第一个联系人:

  1. 在查询编辑器中键入以下查询:
    SELECT name, contact[1]
    FROM Employees;
    
  2. 单击执行按钮。

使用 pgAdmin 查询数组数据

它应该返回以下内容:

使用 pgAdmin 查询数组数据

步骤4) 要将 SELECT 语句与 WHERE 子句结合起来:

  1. 在查询编辑器中输入以下命令:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. 单击执行按钮。

使用 pgAdmin 查询数组数据

它应该返回以下内容:

使用 pgAdmin 查询数组数据

修改 PostgreSQL 排列

步骤1) 要更新 ID 为 3 的用户的第二个联系人,请运行以下命令:

UPDATE Employees
SET contact [ 2 ] = '(408)-589-89347'
WHERE
   id = 3;

步骤2) 单击执行按钮。

修改 PostgreSQL 使用 pgAdmin 进行数组

步骤3)

1.在查询编辑器中输入以下命令,检查更改是否成功:

SELECT * FROM Employees;

2.单击执行按钮。

修改 PostgreSQL 使用 pgAdmin 进行数组

它应该返回以下内容:

修改 PostgreSQL 使用 pgAdmin 进行数组

在搜索中 PostgreSQL 排列

步骤1) 在查询编辑器中键入以下查询:

SELECT
   name,
   contact
FROM
   Employees
WHERE
   '(408)-783-5731' = ANY (contact);

步骤2) 单击执行按钮。

在搜索中 PostgreSQL 使用 pgAdmin 进行数组

它应该返回以下内容:

在搜索中 PostgreSQL 使用 pgAdmin 进行数组

扩展数组

步骤1) 在查询编辑器中键入以下查询:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

步骤2) 单击执行按钮。

使用 pgAdmin 扩展数组

它应该返回以下内容:

使用 pgAdmin 扩展数组

总结

  • PostgreSQL 允许我们将表列定义为数组类型。
  • 数组必须是有效的 数据类型 例如整数、字符或用户定义类型。
  • 要将值插入数组列,我们使用 ARRAY 构造函数。
  • 如果数组列的同一行中有多个元素,则第一个元素位于位置 1。
  • 可以通过传递方括号 [] 内的下标来访问每个值。
  • 可以使用 SELECT 语句检索数组的元素。
  • 数组列的值可以用方括号 [] 或花括号 {} 括起来。
  • 我们可以使用 ANY() 函数搜索数组列值。

下载本教程使用的数据库