PostgreSQL Matriz: Funções, Tipo, Exemplo

⚡ Resumo Inteligente

PostgreSQL O operador ARRAY permite definir uma coluna de tabela como uma matriz de qualquer tipo de dados válido. Ele abrange a criação de colunas de matriz, a inserção de valores com o construtor ARRAY ou chaves, a consulta e modificação de elementos e a pesquisa com ANY().

  • 📦 Definição: Qualquer PostgreSQL O tipo de dados possui um tipo de array correspondente, como integer[].
  • 🧱 Criar e inserir: Use colunas TEXT[] e o construtor ARRAY ou chaves.
  • 🔎 Inquérito: Acesse os elementos com seus índices; o primeiro elemento está na posição 1.
  • ✏️ Modificar e pesquisar: Atualize elementos individuais e valores de pesquisa com ANY().
  • Expandir: A função unnest() divide os valores de um array em linhas separadas.

PostgreSQL Ordem

O que é a PostgreSQL Variedade?

In PostgreSQLPodemos definir uma coluna como uma matriz de tipos de dados válidos. O tipo de dados pode ser predefinido, definido pelo usuário ou um tipo enumerado. Além disso, as matrizes desempenham um papel importante em PostgreSQL.

Cada correspondente PostgreSQL Cada tipo de dado possui um tipo de array correspondente. Por exemplo, o tipo de dado inteiro possui o tipo de array integer[], o tipo de dado caractere possui o tipo de array character[], e assim por diante.

Criar PostgreSQL Arrays

No exemplo a seguir, criaremos uma tabela chamada Funcionários com a coluna de contato definida como um array de texto:

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

O comando deve ser executado com sucesso.

Criar PostgreSQL Arrays

inserindo PostgreSQL Valores de matriz

Deixe-nos agora inserir valores na tabela acima:

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

A inserção deve ser executada com sucesso.

inserindo PostgreSQL Valores de matriz

Os valores da terceira coluna, ou seja, contato, foram inseridos como uma matriz. Isso foi feito usando o construtor ARRAY. Neste exemplo, os valores estão entre colchetes []. Temos dois contatos para a funcionária Alice John.

Ainda é possível usar chaves {} conforme mostrado abaixo:

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

O comando deve ser executado com sucesso.

inserindo PostgreSQL Valores de matriz

As instruções acima irão inserir duas linhas na tabela Funcionários. Ao usar chaves, a matriz é colocada entre aspas simples ('), enquanto os itens da matriz de texto são colocados entre aspas duplas (“).

Consultando dados da matriz

Para consultar os elementos de uma matriz, usamos a instrução SELECT. Para visualizar o conteúdo da nossa tabela Employees, executamos o seguinte comando:

SELECT * FROM Employees;

Isso retorna o seguinte:

Consultando dados da matriz

Os elementos da coluna da matriz, ou seja, contato, foram colocados entre chaves {}. Para acessar os próprios elementos da matriz, adicionamos um índice entre colchetes []. O primeiro elemento em uma matriz está na posição 1.

Por exemplo, precisamos obter os nomes dos funcionários e apenas o primeiro contato para aqueles funcionários que possuem mais de um contato. Podemos acessar isso como contato[1]. Vejamos:

SELECT name, contact[1]
FROM Employees;

Isso retornará o seguinte:

Consultando dados da matriz

Podemos usar a instrução SELECT juntamente com a cláusula WHERE para filtrar linhas com base na coluna de matriz. Por exemplo, para ver o funcionário com (408)-567-78234 como segundo contato, podemos executar o seguinte comando:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Isso retornará o seguinte:

Consultando dados da matriz

Modificando PostgreSQL Ordem

Você pode atualizar todos os elementos de uma matriz ou apenas um deles. Aqui está o conteúdo da tabela Funcionários:

Modificando PostgreSQL Ordem

Vamos atualizar o segundo número de telefone do funcionário James Bush, cujo id é 3:

Modificando PostgreSQL Ordem

Execute o seguinte comando:

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

O comando deve ser executado com sucesso:

Modificando PostgreSQL Ordem

Vamos consultar a tabela para verificar se a alteração foi bem-sucedida:

Modificando PostgreSQL Ordem

A mudança foi bem sucedida.

Pesquisando em um PostgreSQL Ordem

Atualmente, nossa tabela de Funcionários é a seguinte:

Pesquisando em um PostgreSQL Ordem

Suponha que precisamos saber quem é o proprietário do contato (408)-783-5731, independentemente da posição dentro da matriz de contatos. Podemos usar a função ANY(), como mostrado abaixo:

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

Isso retornará o seguinte:

Pesquisando em um PostgreSQL Ordem

Expandindo matrizes

Podemos dividir os valores de uma matriz em linhas. Esse processo é conhecido como expansão de matriz. No exemplo da tabela Funcionários, existem alguns funcionários com dois contatos na matriz de contatos. Podemos dividir esses contatos em linhas separadas. PostgreSQL Fornece a função unnest() que pode ser usada para isso. Por exemplo:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Isso retornará o seguinte:

Expandindo matrizes

Os funcionários Alice John e James Bush têm dois contatos. Podemos dividi-los em linhas separadas.

Usando pgAdmin

Criar PostgreSQL Arrays

Para fazer o mesmo por meio do pgAdmin, faça o seguinte:

Passo 1) Faça login em sua conta pgAdmin.

Passo 2)

  1. Na barra de navegação à esquerda, clique em Bancos de dados.
  2. Clique no botão Demo.

Criar PostgreSQL Matrizes usando pgAdmin

Passo 3) Digite a consulta no editor de consultas para criar a tabela Funcionários:

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

Passo 4) Clique no botão Executar.

Criar PostgreSQL Matrizes usando pgAdmin

inserindo PostgreSQL Valores de matriz

Passo 1) Digite a seguinte consulta no editor de consultas:

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

Passo 2) Clique no botão Executar:

inserindo PostgreSQL Valores de matriz

Passo 3) Para usar chaves na consulta, digite a seguinte consulta no editor de consultas:

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

Em seguida, clique no botão Executar:

inserindo PostgreSQL Valores de matriz

Consultando dados da matriz

Passo 1) Para visualizar o conteúdo da tabela Funcionários, digite a seguinte consulta no editor de consultas:

SELECT * FROM Employees;

Passo 2) Clique no botão Executar:

Consultando dados de array usando pgAdmin

Deve retornar o seguinte:

Consultando dados de array usando pgAdmin

Passo 3) Para visualizar os primeiros contatos dos funcionários, digite a seguinte consulta no editor de consultas e clique no botão Executar:

SELECT name, contact[1]
FROM Employees;

Consultando dados de array usando pgAdmin

Deve retornar o seguinte:

Consultando dados de array usando pgAdmin

Passo 4) Para combinar a instrução SELECT com a cláusula WHERE, digite o seguinte comando no editor de consultas e clique no botão Executar:

SELECT
   name
FROM
   Employees
WHERE
   contact [ 2 ] = '(408)-567-78234';

Consultando dados de array usando pgAdmin

Deve retornar o seguinte:

Consultando dados de array usando pgAdmin

Modificando PostgreSQL Ordem

Passo 1) Para atualizar o segundo contato do usuário com o ID 3, execute o seguinte comando:

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

Passo 2) Clique no botão Executar.

Modificando PostgreSQL Matriz usando pgAdmin

Passo 3) Digite o seguinte comando no editor de consultas para verificar se a alteração foi bem-sucedida e, em seguida, clique no botão Executar:

SELECT * FROM Employees;

Modificando PostgreSQL Matriz usando pgAdmin

Deve retornar o seguinte:

Modificando PostgreSQL Matriz usando pgAdmin

Pesquisando em um PostgreSQL Ordem

Passo 1) Digite a seguinte consulta no editor de consultas:

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

Passo 2) Clique no botão Executar.

Pesquisando em um PostgreSQL Matriz usando pgAdmin

Deve retornar o seguinte:

Pesquisando em um PostgreSQL Matriz usando pgAdmin

Expandindo matrizes

Passo 1) Digite a seguinte consulta no editor de consultas:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Passo 2) Clique no botão Executar.

Expandindo matrizes usando pgAdmin

Deve retornar o seguinte:

Expandindo matrizes usando pgAdmin

Baixe o banco de dados usado neste tutorial

Perguntas Frequentes

Sim. Os assistentes de IA podem escrever instruções CREATE TABLE com colunas de matriz, comandos INSERT usando ARRAY ou chaves, e funções como unnest() ou ANY(). Teste o SQL gerado no seu esquema antes de executá-lo.

Sim. As ferramentas de IA podem indicar se uma coluna de matriz ou uma tabela filha normalizada é mais adequada para seus dados. Matrizes são ideais para listas pequenas e fixas, enquanto tabelas separadas são mais adequadas para relacionamentos grandes ou consultados com frequência. Valide com seus padrões de consulta.

Use a função array_length(array, dimensão). Por exemplo, array_length(contact, 1) retorna o número de elementos na primeira dimensão do array de contatos.

Sim. Use a função array_append(array, valor) ou o operador de concatenação ||. Por exemplo, UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') adiciona um novo elemento.

Resuma esta postagem com: