PostgreSQL Array: funzioni, tipo, esempio

⚡ Riepilogo intelligente

PostgreSQL Array consente di definire una colonna di tabella come un array di qualsiasi tipo di dati valido. Il manuale illustra come creare colonne di tipo array, inserire valori con il costruttore ARRAY o con le parentesi graffe, interrogare e modificare gli elementi e cercare con ANY().

  • 📦 Definizione: Qualsiasi PostgreSQL Il tipo di dati ha un tipo di array corrispondente, come ad esempio integer[].
  • 🧱 Crea e inserisci: Utilizzare colonne TEXT[] e il costruttore ARRAY oppure le parentesi graffe.
  • 🔎 Query: Accedete agli elementi con i loro indici; il primo elemento si trova in posizione 1.
  • Modifica e cerca: Aggiorna i singoli elementi e cerca i valori con ANY().
  • Espandere: La funzione unnest() suddivide i valori dell'array in righe separate.

PostgreSQL Italia

Cosa è PostgreSQL Vettore?

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

Ogni corrispondente PostgreSQL A ogni tipo di dato corrisponde un tipo di array. Ad esempio, il tipo di dato intero ha il tipo di array integer[], il tipo di dato carattere ha il tipo di array character[] e così via.

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, ovvero "contatti", sono stati inseriti come un array. Ciò è stato possibile grazie all'utilizzo del costruttore ARRAY. In questo esempio, li abbiamo racchiusi tra parentesi quadre []. Abbiamo due contatti per la 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 Employees, 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 racchiusi tra parentesi graffe {}. Per accedere agli elementi dell'array, si aggiunge 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 quei dipendenti che hanno più di un contatto. Possiamo accedere a questo come contact[1]. Vediamo un esempio:

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 visualizzare 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 tutti gli elementi di un array o un singolo elemento. Ecco il contenuto della tabella Dipendenti:

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 a chi appartiene il contatto (408)-783-5731, indipendentemente dalla posizione all'interno dell'array dei 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 suddividere i valori di un array in righe. Questo processo è noto come espansione dell'array. Nell'esempio della tabella Dipendenti, ci sono alcuni dipendenti con due contatti nell'array dei contatti. Possiamo suddividerli in righe separate. PostgreSQL fornisce la funzione unnest() che può essere utilizzata a questo scopo. Ad 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, fare clic su Database.
  2. Fai 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, digita 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"}'
   );

Quindi fai clic sul pulsante Esegui:

inserzione PostgreSQL Valori di matrice

Interrogazione dei dati dell'array

Passo 1) Per visualizzare il contenuto della tabella Employees, digita 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 visualizzare i primi contatti dei dipendenti, digita la seguente query nell'editor di query e fai clic sul pulsante Esegui:

SELECT name, contact[1]
FROM Employees;

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, digita il seguente comando nell'editor di query e fai clic sul pulsante Esegui:

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

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) Digita il seguente comando nell'editor di query per verificare se la modifica è andata a buon fine, quindi fai clic sul pulsante Esegui:

SELECT * FROM Employees;

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

Scarica il database utilizzato in questo tutorial

DOMANDE FREQUENTI

Sì. Gli assistenti IA possono scrivere istruzioni CREATE TABLE con colonne array, comandi INSERT utilizzando ARRAY o parentesi graffe e funzioni come unnest() o ANY(). Testa il codice SQL generato sul tuo schema prima di eseguirlo.

Sì. Gli strumenti di intelligenza artificiale possono suggerire se una colonna array o una tabella figlia normalizzata sia più adatta ai tuoi dati. Gli array sono ideali per elenchi piccoli e fissi, mentre le tabelle separate sono più indicate per relazioni di grandi dimensioni o interrogate frequentemente. Verifica la scelta con i tuoi modelli di query.

Utilizzare la funzione array_length(array, dimensione). Ad esempio, array_length(contatto, 1) restituisce il numero di elementi nella prima dimensione dell'array dei contatti.

Sì. Utilizza la funzione array_append(array, valore) o l'operatore di concatenazione ||. Ad esempio, UPDATE Employees SET contact = array_append(contact, '(408)-000-0000') aggiunge un nuovo elemento.

Riassumi questo post con: