Torna all'elenco degli articoli Articoli
Tempo di lettura: 7 minuti

Enumerare e spiegare tutti gli elementi di base di una query SQL

"Quali sono gli elementi di base di una query SQL?" è una domanda popolare nei colloqui di lavoro in ambito SQL. In questo articolo rivediamo la sintassi di base di una query SQL.

Una query SQL, che richiede informazioni da un database relazionale, è composta da diversi elementi. Questi permettono di selezionare colonne specifiche da tabelle specifiche e di filtrare e ordinare queste informazioni, se necessario. In questo articolo, passerò brevemente in rassegna questi elementi, spiegandone le funzioni e le modalità di utilizzo.

Elementi di base di una query SQL

SELEZIONARE

L'istruzione SELECT è la prima che si incontra quando si inizia a imparare l'SQL. Con l'istruzione SELECT si scelgono le colonne da visualizzare nell'output.

Per esempio, immaginiamo di essere analisti di dati al Louvre. Abbiamo diverse tabelle nel nostro database, tra cui quelle relative a artworks e artists.

artworks
idtitleartist_idyeartype
111The Mona Lisa121506painting
112Jean-Baptiste Poquelin (Moliere)141787sculpture
113The Wedding Feast at Cana111563painting
114The Lacemaker131670painting
115A River141759sculpture

artists
idnameyear_birthyear_death
11Paolo Veronese15281588
12Leonardo da Vinci14521519
13Johannes Vermeer16321675
14Jean-Jacques Caffieri17251792

Il nostro primo compito è quello di ottenere alcune informazioni di base sulle opere d'arte che esponiamo, in particolare title, l'anno di creazione e il tipo di opera. Ecco la query per richiedere queste informazioni:

SELECT title, year, type
FROM artworks;

Nell'istruzione SELECT elenchiamo semplicemente le colonne che vogliamo visualizzare. Ecco l'output:

titleyeartype
The Mona Lisa1506painting
Jean-Baptiste Poquelin (Moliere)1787sculpture
The Wedding Feast at Cana1563painting
The Lacemaker1670painting
A River1759sculpture

Potete trovare altri esempi di SELECT in questo articolo sulla scrittura di un'istruzione SELECT. Inoltre, date un'occhiata al nostro SQL Basics per iniziare a imparare SQL in modo interattivo.

FROM

Come si è visto nel primo esempio, quando si scelgono le colonne da visualizzare, è necessario specificare anche la tabella in cui sono memorizzati i dati. Questo si fa con la parola chiave FROM.

Nell'esempio precedente, abbiamo richiesto informazioni su varie opere d'arte, che sono (come previsto) memorizzate nella tabella artworks tabella.

Ora cerchiamo di ottenere alcune informazioni di base sugli artisti presenti nel nostro museo. A tal fine, richiederemo i nomi degli artisti, gli anni di nascita e di morte dalla tabella artists tabella:

SELECT name, year_birth, year_death
FROM artists;

Ecco l'output di questa query SQL:

nameyear_birthyear_death
Paolo Veronese15281588
Leonardo da Vinci14521519
Johannes Vermeer16321675
Jean-Jacques Caffieri17251792

JOIN

In molti casi è necessario unire i dati di diverse tabelle per ottenere l'output desiderato. L'istruzione JOIN consente di ottenere informazioni da due o più tabelle in un'unica query SQL.

Ad esempio, vogliamo vedere i nomi degli artisti insieme alle loro opere. Queste informazioni non sono disponibili in un'unica tabella: il nome dell'opera d'arte è presente nella tabella artworks mentre il nome dell'artista è memorizzato nella tabella artists tabella. Tuttavia, è possibile unire facilmente queste due informazioni utilizzando il numero ID dell'artista , che è memorizzato in entrambe le tabelle:

SELECT artworks.title, artists.name
FROM artworks
JOIN artists
ON artworks.artist_id = artists.id;

Si specifica una tabella nell'istruzione FROM e un'altra tabella nell'istruzione JOIN. Utilizziamo anche la parola chiave ON per indicare al database quali valori delle colonne devono essere abbinati per unire le tabelle.

Ecco il risultato:

titlename
The Mona LisaLeonardo da Vinci
Jean-Baptiste Poquelin (Moliere)Jean-Jacques Caffieri
The Wedding Feast at CanaPaolo Veronese
The LacemakerJohannes Vermeer
A RiverJean-Jacques Caffieri

Per comprendere i diversi tipi di join disponibili in SQL, consultate questa guida introduttiva. Inoltre, assicuratevi di dare un'occhiata alle nostre 10 migliori domande per i colloqui su SQL Joins. Sono ottime per fare pratica (anche se non vi state preparando per un colloquio di lavoro).

DOVE

La clausola WHERE viene utilizzata per filtrare l'output di una query. Per esempio, supponiamo che il vostro prossimo compito sia quello di elencare i titoli dei dipinti disponibili nel museo e il loro anno di creazione. Non si vogliono informazioni su sculture e altri tipi di opere d'arte nell'insieme dei risultati.

Ecco la query SQL da utilizzare:

SELECT title, year
FROM artworks
WHERE type = ‘painting’;

Con l'istruzione WHERE si specifica semplicemente che il tipo di opera d'arte deve essere "dipinto". Si ottiene così questo risultato:

titleyear
The Mona Lisa1506
The Wedding Feast at Cana1563
The Lacemaker1670

Per maggiori dettagli sulla clausola WHERE, consultate questo articolo.

ORDINARE PER

Spesso si desidera che il risultato della query venga visualizzato in un ordine specifico. In SQL, è possibile ordinare l'insieme dei risultati con la clausola ORDER BY.

Ad esempio, ordiniamo i risultati dell'ultima query SQL in base all'anno di creazione, partendo dalle opere più recenti. Per farlo, è sufficiente specificare la colonna anno nella clausola ORDER BY e aggiungere la parola chiave DESC per mettere i risultati in ordine decrescente:

SELECT title, year
FROM artworks
WHERE type = ‘painting’
ORDER BY year DESC;
titleyear
The Lacemaker1670
The Wedding Feast at Cana1563
The Mona Lisa1506

Per saperne di più sull'ordinamento delle righe in base a una o più colonne, consultare questo articolo introduttivo. Per casi d'uso più avanzati di ORDER BY, consultate questa guida approfondita sull'istruzione ORDER BY.

GRUPPO BY

Per impostazione predefinita, tutti i risultati ottenuti sono orientati ai record. Tuttavia, in alcuni casi è possibile calcolare metriche per gruppi di record (ad esempio, il numero di dipinti di ciascun artista, il capolavoro più vecchio per ciascun tipo di opera d'arte, ecc.) È qui che entra in gioco la clausola GROUP BY.

Con GROUP BY è possibile creare gruppi di record (righe) e calcolare le metriche su ciascun gruppo. Ad esempio, vediamo l'anno di creazione del capolavoro più antico di ogni tipo di opera d'arte:

SELECT type, MIN (year) AS oldest_work_from
FROM artworks
GROUP BY type;

Qui si calcola l'anno più antico (minimo) per ogni tipo di opera d'arte. Otteniamo il seguente risultato:

typeoldest_work_from
painting1506
sculpture1759

Per saperne di più sulla sintassi di GROUP BY, consultare questo articolo. Inoltre, trovate altri esempi con GROUP BY qui.

AVERE

Come la clausola WHERE, HAVING filtra l'output della query. Tuttavia, WHERE filtra a livello di record, mentre HAVING filtra a livello di gruppo. Per saperne di più sulla differenza tra HAVING e WHERE, leggete qui.

Supponiamo di voler ottenere i tipi di opere d'arte in cui l'opera più antica è datata prima del 1600. Poiché questa è la condizione per un valore aggregato, la inseriamo nella clausola HAVING:

SELECT type, MIN (year) AS oldest_work_from
FROM artworks
GROUP BY type
HAVING MIN (year) < 1600;

Nel nostro caso, solo i dipinti soddisfano questa condizione:

typeoldest_work_from
painting1506

Per maggiori dettagli su quando e come utilizzare la clausola HAVING , consultare questa guida.

Sintassi delle query SQL: Riassumiamo

Dopo aver passato in rassegna gli elementi di base di una query SQL, è probabile che si capisca dove e come utilizzare questi elementi è solitamente semplice. Tuttavia, ci sono molti dettagli non trattati in questa panoramica. Per aiutarvi a ripassare la vostra conoscenza della sintassi SQL, abbiamo preparato una scheda informativa di due pagine su SQL Basics . Scaricatela, stampatela e attaccatela alla scrivania.

Ora proviamo a utilizzare tutti gli elementi di base in una query SQL. Cerchiamo di ottenere i nomi degli artisti insieme all'anno della loro opera più antica presente nel museo. Vogliamo anche (1) escludere la Monna Lisa, perché troppo famosa; (2) includere solo gli artisti la cui opera più antica è stata creata prima del 1700 e (3) ordinare l'output in base all'anno dell'opera più antica, partendo dalla più antica.

Ecco la query da utilizzare:

interrogazione

L'output di questa query è:

nameoldest_work_from
Paolo Veronese1563
Johannes Vermeer1670

Siete riusciti a seguire la logica di questa query SQL? Se non vi sentite sicuri nell'uso dei diversi elementi della query, date un'occhiata al nostro SQL Basics corso. In 129 esercizi interattivi, vengono trattate le applicazioni fondamentali di SQL, tra cui la creazione di report di base, il lavoro con più tabelle, la creazione di report con funzioni aggregate e la scrittura di subquery e istruzioni complesse.

Desiderate fare ancora più pratica? LearnSQL.it ha sviluppato un corso di SQL Practice Set con 88 esercizi interattivi per verificare le conoscenze di base del linguaggio SQL.

Grazie per aver letto e buon apprendimento!