CodeGym /Corsi /SQL SELF /Selezione di colonne specifiche: estrazione dei dati per ...

Selezione di colonne specifiche: estrazione dei dati per nome delle colonne

SQL SELF
Livello 2 , Lezione 0
Disponibile

Quando tiriamo fuori dati dal database, raramente ci servono proprio tutte le colonne. Per esempio, nella tabella dei dipendenti employees potresti avere 15 colonne: nome, cognome, data di nascita, posizione, stipendio, data di assunzione e così via. Ma magari vuoi solo sapere i loro nomi e le posizioni. Ha senso, no? Prendere tutti i dati è inutile e inefficiente. Ed è qui che entra in gioco l’arte di selezionare solo le colonne che ti servono.

Se vuoi una metafora, è come se dovessi prendere solo le mele da un cesto pieno di arance, mele e banane. Figo, vero? Ecco, è proprio quello che faremo!

Sintassi

Ricorda, SQL è stato progettato per essere il più user-friendly possibile.

Prima di tutto, il case delle query non conta. Puoi scrivere SELECT, Select o select e funzionerà sempre. Poi, gli a capo non hanno importanza. Il DBMS trasforma comunque la query in una riga unica, quindi scrivila come ti pare.

Come avrai già intuito, le parole chiave SELECT e FROM non bastano. Altrimenti non ci sarebbe così tanto da dire su SQL. Una query SQL più completa ha questa forma:

SELECT colonne
FROM tabella
WHERE condizione
GROUP BY colonne
HAVING colonne
ORDER BY ordinamento

Dove:

  • colonne — sono i nomi delle colonne che vuoi ottenere.
  • tabella — è il nome della tabella da cui estrai i dati.
  • condizione — la condizione per filtrare le righe.
  • ordinamento — le righe e l’ordine di ordinamento.

Sembra facile? Vediamolo con un esempio vero. Ma partiamo da qualcosa di più semplice.

Esempio di query base

Supponiamo di avere una tabella students con i dati degli studenti. Ecco come potrebbe essere la struttura della tabella:

id first_name last_name age grade
1 Alex Lin 20 A
2 Anna Song 22 B
3 Otto Art 19 A

Ora vogliamo vedere solo i cognomi last_name e i voti grade di tutti gli studenti.

La query sarà così:

SELECT last_name, grade
FROM students;

Risultato:

last_name grade
Lin A
Song B
Art A

Complimenti, hai appena risparmiato risorse del database e reso il risultato molto più leggibile!

Concatenazione di stringhe

Ormai sai già selezionare i dati, proviamo qualcosa di più interessante. Nella nostra tabella nome e cognome sono in colonne diverse. Scriviamo una query che mostri una colonna con il nome completo dello studente.

Per concatenare due stringhe in PostgreSQL si usa l’operatore ||. La nostra query SELECT sarà così:

SELECT first_name || last_name, grade
FROM students;

Risultato:

first_name || last_name grade
AlexLin A
AnnaSong B
OttoArt A

Hmm. Sembra che manchi qualcosa. Tipo uno spazio tra nome e cognome! Sistemiamo subito.

SELECT first_name || ' ' || last_name, grade
FROM students;

Risultato:

first_name || ' ' || last_name grade
Alex Lin A
Anna Song B
Otto Art A

Bello. Il contenuto della tabella risultato mi piace, ma che fine ha fatto l’intestazione? Sarebbe bello vedere full name, o almeno name, non first_name || ' ' || last_name. Così non è né bello né pratico. Ma c’è una soluzione anche per questo.

Selezione usando alias

Le query SQL possono essere molto più leggibili usando gli alias. È solo un modo per dare un nuovo nome a una colonna nella query. Gli alias usano la parola chiave AS (anche se tecnicamente puoi ometterla, ma per chiarezza meglio usarla sempre).

Guarda qui:

SELECT first_name AS "Nome", last_name AS "Cognome", grade AS "Voto"
FROM students;

Risultato:

Nome Cognome Voto
Alex Lin A
Anna Song B
Otto Art A

Qui abbiamo:

  1. Rinominato le colonne per renderle più chiare in italiano.
  2. Usato gli alias nella query, con AS.

Se il tuo capo o il cliente vuole vedere i dati degli utenti senza impazzire davanti alla tabella, gli alias sono tuoi amici.

Ora miglioriamo un po’ la nostra query per il nome completo.

SELECT first_name || ' ' || last_name  AS "Nome completo", grade  AS "Voto"
FROM students;

Risultato:

Nome completo Voto
Alex Lin A
Anna Song B
Otto Art A

Perfetto. Proprio come volevamo.

Perché selezionare solo alcune colonne?

  1. Performance

Pensa di lavorare con una tabella enorme, milioni di righe e centinaia di colonne. Estrarre tutto con SELECT * può richiedere minuti o anche ore, e consumare un sacco di risorse del server. Così invece prendi solo quello che ti serve.

  1. Leggibilità

Quando estrai solo le colonne che ti servono, il risultato è molto più facile da capire. Altrimenti il risultato sembrerà una timeline infinita di notizie di venerdì sera.

  1. Minimizzare gli errori

Meno dati gestisci nella query, meno probabilità hai di sbagliare qualcosa. Soprattutto se poi lavori ancora su quei dati.

Cosa ricordare?

Alias delle tabelle

Un altro modo per gestire nomi di tabelle lunghi è usare gli alias per le tabelle. Dovrebbero ricordare il nome originale o essere comunque collegati logicamente al contenuto.

SELECT sa05.first_name, sa05.course_id
FROM students_archive_2005 AS sa05

Questo metodo è super utile se hai nomi di tabelle lunghissimi tipo university_students_enrollments_records: puoi usare usr o us

Errori tipici nella selezione di colonne specifiche

  1. Errori nei nomi delle colonne. Se scrivi male il nome di una colonna, riceverai un errore tipo: ERROR: column "lastname" does not exist. Controlla sempre che i nomi siano giusti.

  2. Nomi in conflitto. Quando la query coinvolge più tabelle, specifica sempre a quale tabella appartiene il campo. Tipo students.first_name.

  3. Usare SELECT * — è una trappola per principianti. Sì, funziona ed è comodo, ma nei progetti grandi è una pessima pratica! Seleziona sempre solo le colonne che ti servono davvero.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION