O que é PostgreSQL Array?
No PostgreSQL, podemos definir uma coluna como um array de tipos de dados válidos. O tipo de dados pode ser integrado, definido pelo usuário ou tipo enumerado. Fora isso, os arrays desempenham um papel importante no PostgreSQL.
Cada tipo de dados PostgreSQL correspondente vem com um tipo de array relevante. Por exemplo, o tipo de dados inteiro tem o tipo de array integer [], o tipo de dados de caractere tem o tipo de array character [], etc.
Neste tutorial do PostgreSQL, você aprenderá:
- O que é PostgreSQL Array?
- Criação de matrizes PostgreSQL
- Inserindo Valores de Matriz PostgreSQL
- Consultando Dados de Matriz
- Modificação do array PostgreSQL
- Pesquisando em uma matriz PostgreSQL
- Expansão de matrizes
- Usando o pgAdmin
Criação de matrizes PostgreSQL
No exemplo a seguir, criaremos uma tabela chamada Funcionários com a coluna de contato definida como uma matriz de texto:
CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);
O comando deve ser executado com sucesso.
Inserindo Valores de Matriz PostgreSQL
Vamos agora inserir valores na tabela acima:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
A inserção deve ser executada com sucesso.
Os valores da terceira coluna, ou seja, contato, foram inseridos como uma matriz. Isso foi conseguido com o uso do construtor ARRAY.
Neste exemplo, nós os colocamos entre colchetes []. Temos dois contatos para a funcionária Alice John.
Ainda é possível usarmos chaves {} conforme mostrado abaixo:
INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');
O comando deve ser executado com sucesso.
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 de Matriz
Para consultar os elementos de uma matriz, usamos a instrução SELECT.
Para ver o conteúdo da nossa tabela Funcionários, executamos o seguinte comando:
SELECT * FROM Employees;
Isso retorna o seguinte:
Os elementos da coluna da matriz, ou seja, contato, foram colocados entre chaves {}.
Para acessar os próprios elementos da matriz, adicionamos um subscrito 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 com mais de um contato. Podemos acessar como contato [1].
Vamos ver isso:
SELECT name, contact[1]FROM Employees;
Isso retornará o seguinte:
Podemos usar a instrução SELECT junto com a cláusula WHERE para filtrar linhas com base na coluna da matriz.
Por exemplo, para ver o funcionário com (408) -567-78234 como o segundo contato, podemos executar o seguinte comando:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
Isso retornará o seguinte:
Modificação do array PostgreSQL
Você pode atualizar todos ou um único elemento de uma matriz.
Aqui está o conteúdo da tabela Funcionários:
Vamos atualizar o segundo número de telefone do funcionário James Bush, cuja id é 3:
Execute o seguinte comando:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
O comando deve ser executado com sucesso:
Vamos consultar a tabela para verificar se a mudança foi bem-sucedida:
A mudança foi bem-sucedida.
Pesquisando em uma matriz PostgreSQL
Atualmente, nossa tabela de Funcionários é a seguinte:
Suponha que precisamos saber quem é o proprietário do contato (408) -783-5731, independentemente da posição dentro da matriz de contato, podemos usar a função ANY () conforme mostrado abaixo:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Isso retornará o seguinte:
Expansão de matrizes
Podemos dividir os valores de um array em linhas. Este processo é conhecido como expansão da matriz.
No exemplo da tabela Funcionários, existem alguns funcionários com dois contatos na matriz de contato. Podemos dividi-los em linhas separadas.
O PostgreSQL fornece a função unnest () que pode ser usada para isso.
Por exemplo:
SELECTname,unnest(contact)FROMEmployees;
Isso retornará o seguinte:
Os funcionários Alice John e James Bush, possuem dois contatos. Podemos dividir em linhas separadas.
Usando o pgAdmin
Criação de matrizes PostgreSQL
Para fazer o mesmo por meio do pgAdmin, faça o seguinte:
Etapa 1) Faça login em sua conta pgAdmin.
Passo 2)
- Na barra de navegação à esquerda, clique em rbases.
- Clique no botão Demo
Etapa 3) Digite a consulta no editor de consulta para criar a tabela Funcionários:
CREATE TABLE Employees (id int PRIMARY KEY,name VARCHAR (100),contact TEXT []);
Etapa 4) Clique no botão Executar.
Inserindo Valores de Matriz PostgreSQL
Etapa 1) Digite a seguinte consulta no editor de consultas:
INSERT INTO EmployeesVALUES(1,'Alice John',ARRAY [ '(408)-743-9045','(408)-567-7834' ]);
Etapa 2) Clique no botão Executar:
Etapa 3)
Para usar chaves na consulta
Etapa 1) Digite a seguinte consulta no editor de consultas:
INSERT INTO EmployeesVALUES(2,'Kate Joel','{"(408)-783-5731"}'),(3,'James Bush','{"(408)-745-8965","(408)-567-78234"}');
Etapa 2) Clique no botão Executar:
Consultando Dados de Matriz
Etapa 1) Para ver o conteúdo da tabela Funcionários, digite a seguinte consulta no editor de consultas:
SELECT * FROM Employees;
Etapa 2) Clique no botão Executar:
Ele deve retornar o seguinte:
Etapa 3) Para ver os primeiros contatos dos funcionários:
- Digite a seguinte consulta no editor de consultas:
SELECT name, contact[1]FROM Employees;
- Clique no botão Executar.
Ele deve retornar o seguinte:
Etapa 4) Para combinar a instrução SELECT com a cláusula WHERE:
- Digite o seguinte comando no editor de consultas:
SELECTnameFROMEmployeesWHEREcontact [ 2 ] = '(408)-567-78234';
- Clique no botão Executar.
Ele deve retornar o seguinte:
Modificação do array PostgreSQL
Etapa 1) Para atualizar o segundo contato do usuário com id 3, execute o seguinte comando:
UPDATE EmployeesSET contact [ 2 ] = '(408)-589-89347'WHEREid = 3;
Etapa 2) Clique no botão Executar.
Etapa 3)
1. Digite o seguinte comando no editor de consultas para verificar se a alteração foi bem-sucedida:
SELECT * FROM Employees;
2.Clique no botão Executar.
Ele deve retornar o seguinte:
Pesquisando em uma matriz PostgreSQL
Etapa 1) Digite a seguinte consulta no editor de consultas:
SELECTname,contactFROMEmployeesWHERE'(408)-783-5731' = ANY (contact);
Etapa 2) Clique no botão Executar.
Ele deve retornar o seguinte:
Expansão de matrizes
Etapa 1) Digite a seguinte consulta no editor de consultas:
SELECTname,unnest(contact)FROMEmployees;
Etapa 2) Clique no botão Executar.
Ele deve retornar o seguinte:
Resumo:
- O PostgreSQL nos permite definir uma coluna da tabela como um tipo de array.
- A matriz deve ser de um tipo de dados válido, como número inteiro, caractere ou tipos definidos pelo usuário.
- Para inserir valores em uma coluna de array, usamos o construtor ARRAY.
- Se houver mais de um elemento na mesma linha de uma coluna da matriz, o primeiro elemento estará na posição 1.
- Cada valor pode ser acessado passando um subscrito entre colchetes [].
- Os elementos da matriz podem ser recuperados usando a instrução SELECT.
- Os valores da coluna da matriz podem ser colocados entre colchetes [] ou chaves {}.
- Podemos pesquisar os valores da coluna do array usando a função ANY ().
Baixe o banco de dados usado neste tutorial