CodeGym /Corsi /SQL SELF /Uso degli array (`ARRAY`)

Uso degli array (`ARRAY`)

SQL SELF
Livello 16 , Lezione 2
Disponibile

Oggi parliamo un po' degli array — uno degli strumenti potenti di PostgreSQL che ti permette di salvare una lista di valori dello stesso tipo dentro una sola colonna. Vedremo gli array più in dettaglio nei prossimi livelli.

Quando si parla di "array", subito vengono in mente le liste. Pensa a quando scrivi la lista della spesa prima di andare al supermercato: mele, banane, latte, pane. In PostgreSQL un array è proprio come quella lista, dove puoi salvare più valori in un solo campo, e ogni valore è dello stesso tipo di dato. Per esempio, un array di numeri, un array di testi, un array di date, ecc.

Ecco qualche esempio.

Array di numeri:

{1, 2, 3, 4}

Array di stringhe:

{"mela", "banana", "ciliegia"}

Array di date:

{2024-10-01, 2024-10-02, 2024-10-03}

Un array ti permette di mettere tanti valori in un solo campo, risparmiando spazio nella tabella e rendendo le query più flessibili.

Perché usare gli array? Vantaggi principali

Memorizzazione compatta dei dati: puoi salvare più valori in un solo campo. È super utile per dati che sono logicamente collegati tra loro. Tipo la lista dei tag per un articolo o la lista dei voti di uno studente. Ha senso creare una tabella separata solo per due tag?

Comodità nelle query: gli array ti permettono di prendere subito tutta la lista di valori da un campo, e puoi anche lavorare facilmente con i singoli elementi dell'array.

Performance: in certi casi gli array ti evitano di creare tabelle extra per dati collegati, il che può semplificare l'architettura del database e velocizzare lo sviluppo. E questa cosa fa sempre piacere.

Come si lavora con gli array in PostgreSQL?

Creare un array in SELECT

Per creare un array puoi usare il costruttore ARRAY[]. Ecco un esempio:

-- Esempio di array di numeri
SELECT ARRAY[1, 2, 3, 4];

-- Esempio di array di stringhe
SELECT ARRAY['mela', 'banana', 'ciliegia'];

Troppo facile. Dai, creiamo una tabella e proviamo a selezionare qualcosa.

Creare una tabella con array

Per cominciare creiamo una tabella dove una delle colonne sarà un array.

id name - VARCHAR(50) subjects - TEXT[]
1 Alex {Matematica,Fisica}
2 Maria {Chimica,Biologia,Inglese}
3 Peter {Informatica}

Vediamo cosa abbiamo ottenuto:

SELECT * FROM students;
id name subjects
1 Alex {Matematica,Fisica}
2 Maria {Chimica,Biologia,Inglese}
3 Peter {Informatica}

Estrazione dei dati dagli array

Per estrarre dati da un array PostgreSQL ti dà diverse funzioni e operatori.

Estrazione di un elemento dell'array

Per prendere un elemento dell'array tramite il suo indice, si usano le parentesi quadre []. Occhio che la numerazione parte da 1 (non da 0 come in tanti linguaggi di programmazione).

-- Prendiamo la prima materia di ogni studente
SELECT name, subjects[1] AS prima_materia FROM students;

Ecco il risultato:

name prima_materia
Alex Matematica
Maria Chimica
Peter Informatica

Estrazione dell'intera riga dell'array

Per prendere tutti gli elementi dell'array si usa un normale SELECT:

SELECT name, subjects FROM students;

Ricerca di valori dentro un array

A volte ti serve sapere se un array contiene un certo valore. Per questo si usa l'operatore ANY.

-- Seleziona gli studenti che studiano "Matematica"
SELECT name
FROM students
WHERE 'Matematica' = ANY(subjects);

Risultato della query:

name
Alex

In PostgresQL ci sono un sacco di funzioni e operatori per lavorare con gli array, ma li vedrai nei prossimi livelli :P

Errori tipici quando si lavora con gli array

Confondere l'indicizzazione da 0 e da 1.

In PostgreSQL l'indicizzazione degli array parte da 1. Se sei abituato a linguaggi tipo Python o JavaScript, questa cosa può confondere facilmente.

Array vuoti.

Un array vuoto {} e NULL sono cose diverse in PostgreSQL. Se confronti gli array, non confondere questi concetti.

Lavorare con array molto grandi.

Salvare una quantità enorme di dati in un array può rallentare le query. Usa gli array per piccoli volumi di dati.

2
Compito
SQL SELF, livello 16, lezione 2
Bloccato
Ricerca di valori all'interno di un array
Ricerca di valori all'interno di un array
2
Compito
SQL SELF, livello 16, lezione 2
Bloccato
Estrazione del primo elemento di un array
Estrazione del primo elemento di un array
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION