PostgreSQL Array: funzioni, tipo, esempio

Che cos'è la PostgreSQL Vettore?

In PostgreSQL, possiamo definire una colonna come un array di tipi di dati validi. Il tipo di dati può essere incorporato, definito dall'utente o enumerato. Oltre a questo, gli array svolgono un ruolo importante PostgreSQL.

Ogni corrispondente PostgreSQL il tipo di dati viene fornito con un tipo di array pertinente. Ad esempio, il tipo di dati intero ha il tipo di array intero[], il tipo di dati carattere ha il tipo di array carattere[], ecc.

Creazione PostgreSQL Array

Nell'esempio seguente creeremo una tabella denominata Dipendenti con la colonna dei contatti definita come array di testo:

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

Il comando dovrebbe essere eseguito correttamente.

Creazione PostgreSQL Array

inserzione PostgreSQL Valori di matrice

Andiamo ora insert valori nella tabella sopra:

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

L'inserimento dovrebbe essere eseguito correttamente.

inserzione PostgreSQL Valori di matrice

I valori della terza colonna, cioè contact, sono stati inseriti come array. Ciò è stato ottenuto utilizzando il costruttore ARRAY.

In questo esempio, li abbiamo racchiusi tra parentesi quadre []. Abbiamo due contatti per il dipendente Alice John.

È ancora possibile utilizzare le parentesi graffe {} come mostrato di seguito:

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

Il comando dovrebbe essere eseguito correttamente.

inserzione PostgreSQL Valori di matrice

Le istruzioni di cui sopra inseriranno due righe nella tabella Employees. Quando si usano le parentesi graffe, l'array è racchiuso tra virgolette singole (') mentre gli elementi dell'array di testo sono racchiusi tra virgolette doppie (“).

Interrogazione dei dati dell'array

Per interrogare gli elementi di un array, utilizziamo l'istruzione SELECT.

Per visualizzare il contenuto della nostra tabella Dipendenti, eseguiamo il seguente comando:

SELECT * FROM Employees;

Questo restituisce quanto segue:

Interrogazione dei dati dell'array

Gli elementi della colonna dell'array, ovvero contact, sono stati racchiusi tra parentesi graffe {}.

Per accedere agli elementi dell'array, aggiungiamo un indice tra parentesi quadre []. Il primo elemento di un array si trova in posizione 1.

Ad esempio, dobbiamo ottenere i nomi dei dipendenti e solo il loro primo contatto per i dipendenti con più di un contatto. Possiamo accedervi come contatto[1].

Vediamo questo:

SELECT name, contact[1]
FROM Employees;

Verrà restituito quanto segue:

Interrogazione dei dati dell'array

Possiamo utilizzare l'istruzione SELECT insieme alla clausola WHERE per filtrare le righe in base alla colonna dell'array.

Ad esempio, per vedere il dipendente con (408)-567-78234 come secondo contatto, possiamo eseguire il seguente comando:

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

Verrà restituito quanto segue:

Interrogazione dei dati dell'array

Modifica PostgreSQL Italia

È possibile aggiornare tutto o un singolo elemento di un array.

Ecco il contenuto della tabella Employees:

Modifica PostgreSQL Italia

Aggiorniamo il secondo numero di telefono del dipendente James Bush, il cui ID è 3:

Modifica PostgreSQL Italia

Eseguire il seguente comando:

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

Il comando dovrebbe essere eseguito correttamente:

Modifica PostgreSQL Italia

Interroghiamo la tabella per verificare se la modifica ha avuto successo:

Modifica PostgreSQL Italia

Il cambiamento ha avuto successo.

Cercando in un PostgreSQL Italia

Attualmente, la nostra tabella Dipendenti è la seguente:

Cercando in un PostgreSQL Italia

Supponiamo di dover sapere chi possiede il contatto (408)-783-5731 indipendentemente dalla posizione all'interno dell'array di contatti, possiamo utilizzare la funzione ANY() come mostrato di seguito:

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

Verrà restituito quanto segue:

Cercando in un PostgreSQL Italia

Array espandibili

Possiamo dividere i valori di un array in righe. Questo processo è noto come espansione dell'array.

Nell'esempio della tabella Impiegati, sono presenti alcuni impiegati con due contatti nell'array contatti. Possiamo dividerli in righe separate.

PostgreSQL fornisce la funzione unnest() che può essere utilizzata a questo scopo.

Per esempio:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Verrà restituito quanto segue:

Array espandibili

I dipendenti Alice John e James Bush hanno due contatti. Possiamo dividerli in righe separate.

Utilizzando pgAdmin

Creazione PostgreSQL Array

Per ottenere lo stesso risultato tramite pgAdmin, procedi come segue:

Passo 1) Accedi al tuo account pgAdmin.

Passo 2)

  1. Dalla barra di navigazione a sinistra, fai clic su rbases.
  2. Fare clic sul pulsante Demo

Creazione PostgreSQL Array utilizzando pgAdmin

Passo 3) Digita la query nell'editor di query per creare la tabella Employees:

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

Passo 4) Fare clic sul pulsante Esegui.

Creazione PostgreSQL Array utilizzando pgAdmin

inserzione PostgreSQL Valori di matrice

Passo 1) Digitare la seguente query nell'editor di query:

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

Passo 2) Fare clic sul pulsante Esegui:

inserzione PostgreSQL Valori di matrice

Passo 3)

Per utilizzare le parentesi graffe nella query

Passo 1) Digitare la seguente query nell'editor di query:

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

Passaggio 2) Fare clic sul pulsante Esegui:

inserzione PostgreSQL Valori di matrice

Interrogazione dei dati dell'array

Passo 1) Per visualizzare il contenuto della tabella Dipendenti, digitare la seguente query nell'editor di query:

SELECT * FROM Employees;

Passo 2) Fare clic sul pulsante Esegui:

Interrogazione dei dati dell'array utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Interrogazione dei dati dell'array utilizzando pgAdmin

Passo 3) Per vedere i primi contatti dei dipendenti:

  1. Digitare la seguente query nell'editor di query:
    SELECT name, contact[1]
    FROM Employees;
    
  2. Fare clic sul pulsante Esegui.

Interrogazione dei dati dell'array utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Interrogazione dei dati dell'array utilizzando pgAdmin

Passo 4) Per combinare l'istruzione SELECT con la clausola WHERE:

  1. Digitare il seguente comando nell'editor di query:
    SELECT
       name
    FROM
       Employees
    WHERE
       contact [ 2 ] = '(408)-567-78234';
    
  2. Fare clic sul pulsante Esegui.

Interrogazione dei dati dell'array utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Interrogazione dei dati dell'array utilizzando pgAdmin

Modifica PostgreSQL Italia

Passo 1) Per aggiornare il secondo contatto dell'utente con ID 3, eseguire il seguente comando:

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

Passo 2) Fare clic sul pulsante Esegui.

Modifica PostgreSQL Array utilizzando pgAdmin

Passo 3)

1. Digitare il seguente comando nell'editor di query per verificare se la modifica è stata eseguita correttamente:

SELECT * FROM Employees;

2.Fare clic sul pulsante Esegui.

Modifica PostgreSQL Array utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Modifica PostgreSQL Array utilizzando pgAdmin

Cercando in un PostgreSQL Italia

Passo 1) Digitare la seguente query nell'editor di query:

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

Passo 2) Fare clic sul pulsante Esegui.

Cercando in un PostgreSQL Array utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Cercando in un PostgreSQL Array utilizzando pgAdmin

Array espandibili

Passo 1) Digitare la seguente query nell'editor di query:

SELECT
   name,
   unnest(contact)
FROM
   Employees;

Passo 2) Fare clic sul pulsante Esegui.

Espansione degli array utilizzando pgAdmin

Dovrebbe restituire quanto segue:

Espansione degli array utilizzando pgAdmin

Sommario

  • PostgreSQL ci consente di definire una colonna di tabella come tipo array.
  • L'array deve essere valido tipo di dati come numeri interi, caratteri o tipi definiti dall'utente.
  • Per inserire valori in una colonna dell'array, utilizziamo il costruttore ARRAY.
  • Se è presente più di un elemento nella stessa riga di una colonna di un array, il primo elemento si trova nella posizione 1.
  • È possibile accedere a ciascun valore passando un indice tra parentesi quadre [].
  • Gli elementi dell'array possono essere recuperati utilizzando l'istruzione SELECT.
  • I valori della colonna array possono essere racchiusi tra parentesi quadre [] o graffe {}.
  • Possiamo cercare i valori delle colonne dell'array utilizzando la funzione ANY().

Scarica il database utilizzato in questo tutorial