Vai al contenuto principale

Esempi di query SQL e tutorial

Se vuoi iniziare con SQL, sei nel posto giusto. In questo tutorial SQL ti presenteremo le query SQL: uno strumento potente che ci permette di lavorare con i dati archiviati in un database.
Aggiornato 29 set 2026  · 15 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Che cos’è una query SQL?

SQL sta per Structured Query Language. Spesso viene pronunciato come “S-Q-L” o “sequel”. SQL è usato nella programmazione ed è progettato per gestire i dati memorizzati in un database tramite le query SQL. 

Il tipo più comune di sistema di gestione di database (DBMS) è il sistema di gestione di database relazionali (RDBMS), dove memorizziamo dati strutturati, cioè dati che incorporano relazioni tra entità e variabili. Queste entità e variabili sono organizzate come un insieme di tabelle con colonne e righe. Alcuni tra gli RDBMS più popolari sono MYSQL, Oracle, IBM DB2 e Microsoft SQL Server.

I dati in un RDBMS sono archiviati in un oggetto del database chiamato tabella. Un database contiene spesso diverse tabelle. Ogni tabella è identificata da un nome univoco e contiene una raccolta di dati correlati strutturati come righe e colonne. 

Una colonna è un’entità verticale; si chiamano campi e contengono tutte le informazioni associate a uno specifico campo in una tabella. Ogni riga in una tabella è detta record; è l’entità orizzontale della tabella.

La struttura di un database può ricordare molto Excel. Tuttavia, i database in generale sono più potenti dei fogli di calcolo Excel. Ecco tre motivi per cui si può dire così: 

  1. I database possono interagire con molte altre linguaggi di programmazione, dando a chi programma più potere nel gestire e recuperare informazioni dai dati.
  2. I database possono elaborare più dati dei fogli di calcolo in Excel. Excel può gestire fino a 1 milione di righe di dati, mentre un database può gestirne oltre un miliardo.
  3. I database possono essere collegati più facilmente a internet, consentendo a centinaia di utenti e applicazioni di accedervi contemporaneamente.

Non vedi l’ora di iniziare con SQL? DataCamp ha ottimi materiali per partire; impara SQL evidenzia i percorsi che puoi seguire per affinare le tue competenze SQL!

Entriamo ora più a fondo nelle query SQL… 

Una query SQL è un istruzione composta mettendo insieme vari comandi SQL. Questi comandi SQL insieme eseguono un compito specifico per accedere, gestire, modificare, aggiornare, controllare e organizzare i tuoi dati memorizzati in un database e gestiti tramite un DBMS. 

Perché usare SQL?

SQL è incredibilmente versatile, ed è usato da tutti: da data scientist e ingegneri a marketer e team delle risorse umane, in pratica chiunque voglia semplicemente essere più data-literate!

Non è usato solo nelle aziende tech o limitato alle grandi imprese. Lo utilizzano direttamente o indirettamente settori di ogni dimensione. Ad esempio, chi lavora in finanza e sanità spesso usa SQL, dato l’enorme volume di dati che producono. 

I dati sono la nuova materia prima, e SQL è uno strumento molto potente quando si tratta di gestire e lavorare con i big data. Ti chiedi come sfruttare al massimo SQL? Dai un’occhiata al tutorial di DataCamp Cosa puoi fare con SQL per aiutarti a rispondere alla domanda.

Come scrivere query SQL

Prima di entrare nella formulazione della query, poniamoci la domanda: “Dove scrivo ed eseguo la mia query SQL?” 

Il Learn SQL hub di DataCamp può essere un buon punto di partenza per lavorare con SQL su Mac o Windows e iniziare.

Ma se vuoi semplicemente iniziare a imparare il linguaggio nativo dei database, SQL, puoi partire dal corso Introduction to SQL di DataCamp. Questo corso insegna la sintassi SQL comune a molti tipi di database, come PostgreSQL, MySQL, SQL Server e Oracle. Lavorerai con l’interfaccia SQL integrata di DataCamp e non dovrai affrontare le seccature iniziali di configurazione di un RDBMS. 

DataCamp ha anche un fantastico strumento di notebook dove puoi creare i tuoi taccuini: DataLab. DataLab è un notebook collaborativo basato sul cloud che ti permette di analizzare dati, collaborare con il tuo team e condividere insight. DataLab è progettato per accompagnarti dall’apprendimento della data science alla pratica. Con i dataset integrati, puoi iniziare ad analizzare i dati in pochi minuti.

Ora diamo un’occhiata al dataset con cui lavoreremo in questo tutorial. 

Inizieremo con ‘films’, una tabella SQL che contiene i dati di 10 film. Questi dati sono solo un piccolo sottoinsieme del dataset IMDb Film usato nel corso Introduction to SQL di DataCamp citato in precedenza.

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

Schindler's List

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

Star Wars: Episode V - The Empire Strikes Back

1980

18000000

290158751

8.8

10

The Shawshank Redemption

1994

25000000

28341469

9.3

La tabella ‘films’ ha dieci record: i titoli dei film sono memorizzati su 10 righe. I campi sono le cinque colonne della tabella e contengono le informazioni relative al film. 

  • ‘title’ è il titolo del film
  • ‘release_year’ è l’anno di uscita del film
  • ‘budget’ è il costo di produzione del film in dollari americani
  • ‘gross’ indica quanto ha incassato il film in dollari americani. 
  • ‘imdb_score’  mostra i punteggi derivati dai voti inviati dagli utenti di IMDb, non dai critici cinematografici. 

Iniziamo l’esercizio con alcuni comandi SQL di base, usandoli per esplorare la tabella ‘films’ qui sopra. Non ci aspettiamo che tu esegua subito le query di soluzione… ma piuttosto che le usi come base per imparare alcuni concetti chiave. Quindi non preoccuparti se non hai ancora deciso su quale piattaforma eseguire le query.

Query SQL di base

Ricorda che le parole chiave o i comandi SQL non fanno distinzione tra maiuscole e minuscole; scrivere ‘select’ è lo stesso che scrivere ‘SELECT’. 

Useremo un punto e virgola alla fine di ogni istruzione SQL che scriviamo. Questa è la norma in alcuni sistemi di database ed è utile per separare ciascuna istruzione SQL in modo che possano essere eseguite nella stessa chiamata al server. 

Iniziamo con una domanda. D1: Quali sono i film memorizzati nella tabella?

SELECT - FROM

L’istruzione SELECT è usata per scegliere i campi che vuoi visualizzare dalla tabella del database. Per la D1, ti serve il campo ‘title’.

Il comando/parola chiave FROM specifica la tabella del database da cui vuoi estrarre i dati. Ricorda, un database può essere composto da più tabelle.

Sintassi: SELECT column1, column2, … FROM table_name;

Query SQL: SELECT title FROM films;

Risultato: 

 

title

1

The Godfather

2

The Dark Knight

3

The Godfather: Part II

4

Schindler's List

5

Pulp Fiction

6

The Lord of the Rings: The Return of the King

7

Fight Club

8

Inception

9

Star Wars: Episode V - The Empire Strikes Back

10

The Shawshank Redemption

Potresti chiederti: e se non avessi mai visto la tabella sopra e quindi non conoscessi i nomi delle colonne da specificare nell’istruzione SELECT? Ottima osservazione! Più avanti nel tutorial impareremo il magico ‘*’ (asterisco). 

WHERE

D2: Quali sono i film in uscita nel 2010?

Per questa domanda, vuoi “filtrare” i film in modo da avere i titoli che soddisfano la condizione: ‘release_year’ vale 2010. 

Puoi usare la clausola ‘WHERE’ per estrarre solo i record che soddisfano una condizione specificata.

Sintassi: SELECT column1, column2, … FROM table_name WHERE condition; 

Query SQL: SELECT title, release_year FROM films WHERE release_year = 2010;

Risultato: 

 

title

release_year

1

Inception

2010

Operatori nella clausola WHERE

I seguenti operatori possono essere usati all’interno della clausola WHERE:

Operatore

Descrizione

=

Uguale a

>

Maggiore di

<

Minore di

>=

Maggiore o uguale

<=

Minore o uguale

<> o !=

Diverso da. 

BETWEEN

Compreso in un determinato intervallo

LIKE

Ricerca di un pattern che corrisponda al modello dato

IN

Specifica più valori possibili 

Aritmetica in SQL

Puoi eseguire semplici operazioni aritmetiche in SQL usando i simboli matematici: +, -, *, /. Tuttavia, puoi eseguire operazioni tra colonne solo utilizzando questi simboli aritmetici. Puoi anche usare le parentesi per gestire l’ordine delle operazioni.

Ma niente paura: per operazioni più complesse, SQL ha le funzioni di aggregazione che consentono di eseguire operazioni all’interno della stessa riga. Tratteremo questo argomento più avanti nel tutorial.

D3: Calcola il profitto ottenuto da ciascun film nella tabella ‘films’. 

Suggerimento: esegui Gross - Budget e salva il risultato in una colonna chiamata ‘movie_profit’ usando AS

Query SQL: SELECT title, (gross - budget) AS movie_profit FROM films

Risultato: 

 

title

movie_profit

1

The Godfather

128821952

2

The Dark Knight

348316061

3

The Godfather: Part II

44300000

4

Schindler's List

74067179

5

Pulp Fiction

99930000

6

The Lord of the Rings: The Return of the King

283019252

7

Fight Club

-25976605

8

Inception

132568851

9

Star Wars: Episode V - The Empire Strikes Back

272158751

10

The Shawshank Redemption

3341469

Nota: Gli appassionati di cinema potrebbero storcere il naso per il profitto negativo di Fight Club. La formula usata ((gross - budget) AS movie_profit) è molto semplice e, dati formula e dati, il risultato è corretto. 

Ma l’esempio sopra serve a ricordarti di prestare attenzione al processo di raccolta dei dati! Anche una semplice esplorazione può rivelare errori dovuti a problemi nella raccolta o nell’archiviazione (cambio di tipo di dato, ecc.), come potrebbe essere accaduto durante la creazione del dataset in uso. 

Fai sempre attenzione ai dati con cui lavori!

AND, OR, NOT

La clausola WHERE può essere combinata con altre clausole condizionali usando gli operatori AND, OR e NOT. Gli operatori AND e OR sono usati per filtrare i record in base a più di una condizione, mentre NOT è usato per negare una condizione. 

Vediamone l’uso con degli esempi:

D4: Quali sono i film in uscita nel 2010 e con un punteggio superiore a 9?

Sintassi: SELECT column1, column2, … FROM table_name WHERE condition1 AND condition2 AND condition3 AND condition4…..;

Query SQL: SELECT title, release_year, imdb_score FROM films WHERE release_year = 2010 AND imdb_score >= 9;

L’operatore AND mostra un record se tutte le condizioni separate da AND sono vere.

Nella tabella ‘films’ abbiamo il film ‘Inception’. È l’unico valore vero per release_year = 2010, ma è falso per imdb_score >= 9 e quindi non soddisfa entrambe le condizioni in AND. Di conseguenza, la query restituisce un insieme di risultati vuoto.

D5: Quali sono i film in uscita nel 2010 o con un punteggio superiore a 9?

Sintassi: SELECT column1, column2, … FROM table_name WHERE condition1 OR condition2 OR condition3 OR condition4…..;

Query SQL: SELECT title, release_year, imdb_score FROM films WHERE release_year = 2010 OR imdb_score >= 9;

Risultato: 

 

title

release_year

imdb_score

1

The Godfather

1972

9.2

2

The Dark Knight

2008

9

3

The Godfather: Part II

1974

9

4

Inception

2010

8.8

5

The Shawshank Redemption

1994

9.3

L’operatore OR mostra un record se almeno una delle condizioni separate da OR è VERA.

I film: The Godfather, The Dark Knight, The Godfather: Part II, The Shawshank Redemption sono veri per imdb_score >= 9, mentre Inception è vero per release_year = 2010, e quindi rientrano nella condizione OR.

D6: Quali sono i film che hanno un anno di uscita diverso dal 2010?

Sintassi: SELECT column1, column2, … FROM table_name WHERE NOT condition1;

Query SQL: SELECT title, release_year FROM films WHERE NOT release_year = 2010;

Risultato: 

 

title

release_year

1

The Godfather

1972

2

The Dark Knight

2008

3

The Godfather: Part II

1974

4

Schindler's List

1993

5

Pulp Fiction

1994

6

The Lord of the Rings: The Return of the King

2003

7

Fight Club

1999

8

Star Wars: Episode V - The Empire Strikes Back

1980

9

The Shawshank Redemption

1994

Potresti anche scrivere: SELECT title, release_year FROM films WHERE release_year != 2010;

Otterresti lo stesso risultato di cui sopra. In SQL ci possono essere diversi modi per ottenere lo stesso risultato. Tuttavia, alcune query possono essere più performanti di altre. Le prestazioni possono dipendere da più fattori: la quantità di dati, i comandi usati nella query, come è strutturato il database, il tipo di dato, ecc. Si tratta di un argomento più complesso e avanzato che non tratteremo in questo tutorial sulle query SQL. 

Ma se ti interessa, il corso Database Design di DataCamp approfondisce questi temi.

ORDER BY

La parola chiave ORDER BY è usata per ordinare il risultato in ordine crescente (usando la parola chiave ASC) o decrescente (usando DESC). L’ordinamento predefinito è crescente.

D7: Quali sono i film memorizzati nella tabella? Ordinali in ordine decrescente di release_year.

Sintassi: SELECT column1, column2, … FROM table_name ORDER BY column1, column2, ... ASC|DESC;

Query SQL: SELECT title, release_year FROM films ORDER BY release_year DESC;

Risultato: 

 

title

release_year

1

Inception

2010

2

The Dark Knight

2008

3

The Lord of the Rings: The Return of the King

2003

4

Fight Club

1999

5

Pulp Fiction

1994

6

The Shawshank Redemption

1994

7

Schindler's List

1993

8

Star Wars: Episode V - The Empire Strikes Back

1980

9

The Godfather: Part II

1974

10

The Godfather

1972

LIMIT

A volte il database potrebbe impiegare molto tempo a eseguire la tua query, soprattutto se la quantità di dati archiviati è molto grande. 

Un modo semplice e veloce per testare una query o campionare il tipo di risultato è usare la funzione LIMIT. LIMIT ti permette di limitare il numero di risultati ottenuti.

D8: Quali sono i 5 film più recenti memorizzati nella tabella? 

Suggerimento: ordina il result set in ordine decrescente rispetto a release_year e poi usa LIMIT.

Sintassi: SELECT column1, column2, … FROM table_name LIMIT x;

Query SQL: SELECT title, release_year FROM films ORDER BY release_year DESC LIMIT 5;

Risultato: 

 

title

release_year

1

Inception

2010

2

The Dark Knight

2008

3

The Lord of the Rings: The Return of the King

2003

4

Fight Club

1999

5

Pulp Fiction

1994

INSERT INTO

INSERT INTO è usato per aggiungere nuovi record in una tabella del database. Puoi scrivere un’istruzione INSERT INTO in due modi: 

  • Specificare sia i nomi delle colonne sia i relativi valori

Sintassi: INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

  • Se stai aggiungendo valori per TUTTE le colonne della tabella, non devi specificare i nomi delle colonne nella query. Fai attenzione usando questo metodo e assicurati che l’ordine dei valori sia lo stesso dell’ordine delle colonne nella tabella. 

Sintassi: INSERT INTO table_name VALUES (value1, value2, value3, ...);

D9: Aggiungi una voce per ‘The Godfather: Part III’ nella tabella con i dettagli: (‘The Godfather: Part III’, 1990, 54000000, 136900000, 7.6)

Sintassi: SELECT column1, column2, … FROM table_name ORDER BY column1, column2,... ASC|DESC;

Query SQL: INSERT INTO films (title, release_year, budget, gross, imdb_score)

VALUES (‘The Godfather: Part III’, 1970, 54000000, 136900000, 7.6);

Tabella risultante: 

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

Schindler's List

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

Star Wars: Episode V - The Empire Strikes Back

1980

18000000

290158751

8.8

10

The Shawshank Redemption

1994

25000000

28341469

9.3

11

The Godfather: Part III

1970

54000000

136900000

7.6

UPDATE

Usiamo l’istruzione UPDATE per modificare i record esistenti in una tabella. 

D10: Correggi release_year per ‘The Godfather: Part III’ impostandolo a 1990 invece di 1970

Sintassi: UPDATE table_name SET column1 = value1, column2 = value2, ...WHERE condition;

Query SQL: UPDATE films SET release_year = 1990 WHERE title = ‘The Godfather: Part III’;

Tabella risultante: 

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

Schindler's List

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

Star Wars: Episode V - The Empire Strikes Back

1980

18000000

290158751

8.8

10

The Shawshank Redemption

1994

25000000

28341469

9.3

11

The Godfather: Part III

1990

54000000

136900000

7.6

DELETE

L’istruzione DELETE viene usata per eliminare un record esistente in una tabella. 

D11: Elimina la voce per ‘The Godfather: Part III’ dalla tabella ‘films’.

Sintassi: DELETE FROM table_name WHERE condition;

Query SQL: DELETE FROM films WHERE title = ‘The Godfather: Part III’;

Tabella risultante: uguale alla tabella originale con cui abbiamo iniziato, per un totale di 10 record.

Query SQL avanzate

Ricordi che abbiamo rimandato il magico ‘*’ alla fine della D1? L’asterisco è un asterisco. È un carattere onnicomprensivo che possiamo leggere come ‘tutti’. 

Tornando alla D1: Quali sono i film memorizzati nella tabella?

Abbiamo usato SELECT - FROM con la Sintassi: SELECT column1, column2, … FROM table_name;

Abbiamo usato la query: SELECT title FROM films;

Ma se non sapessi che ‘title’ è un campo nella tabella ‘films’? O il nome di qualsiasi campo nella tabella? O semplicemente vuoi tutti i campi per farti un’idea dei dati? Ecco, è qui che * torna utile.

Potremmo riscrivere la query come: SELECT * FROM films; 

Questo ci restituirebbe tutti i campi disponibili nella tabella.

Caratteri jolly in SQL

LIKE

L’operatore LIKE è usato in una clausola WHERE per cercare un modello specificato in una colonna. 

D12: Recupera tutti i titoli dei film che iniziano con ‘The’

Sintassi: SELECT column1, column2, … FROM table_name WHERE column1 LIKE patternToMatch;

Query SQL: Select * FROM films WHERE title LIKE ‘The%’;

Tabella risultante:

 

title

release_year

budget

gross

imdb_score

1

The Godfather

1972

6000000

134821952

9.2

2

The Dark Knight

2008

185000000

533316061

9

3

The Godfather: Part II

1974

13000000

57300000

9

4

The Lord of the Rings: The Return of the King

2003

94000000

377019252

8.9

5

The Shawshank Redemption

1994

25000000

28341469

9.3

Carattere jolly

Descrizione

Uso: esempio

% (Percentuale)

Rappresenta zero o più caratteri

The%: The, The Godfather, Theodore

_ (Underscore)

Rappresenta un singolo carattere

T_e: The, Tie

[ ] (Parentesi quadre)

Rappresenta un singolo carattere tra quelli in parentesi

C[ao]t: Cat, Cot ma non Coat

^ (Accento circonflesso)

Rappresenta qualsiasi carattere non presente tra le parentesi

Ca[^r]: Cat, Cab, Can ma non Car

- (Trattino)

Rappresenta un singolo carattere all’interno dell’intervallo specificato

C[a-o]: Can, Cab ma non Car, Cat

La cosa interessante è che possiamo usare i caratteri jolly in combinazione! Così puoi creare istruzioni di corrispondenza piuttosto complesse usando i caratteri jolly insieme a LIKE.

Funzioni di aggregazione

SQL è eccellente nell’aggregare i dati come faresti con una tabella pivot in Excel. Le funzioni di aggregazione possono effettuare calcoli non tra due colonne, ma all’interno di una colonna, quindi lavorando su tutte o alcune righe della stessa colonna. 

Queste sono le funzioni di aggregazione in SQL: 

Funzione

Descrizione

COUNT

Conta il numero di record in una particolare colonna

SUM

Somma tutti i valori in una particolare colonna

MIN

Restituisce il valore più basso in una particolare colonna

MAX

Restituisce i valori più alti in una particolare colonna

AVG

Restituisce il valore medio per un gruppo selezionato 

D13: Qual è il film più recente memorizzato nella tabella?

Query SQL: SELECT title AS latest_movie, MAX(release_year) AS released_in FROM films;

Risultato: 

 

latest_movie

released_in

1

Inception

2010

GROUP BY

Le funzioni di aggregazione SQL aggregano su un’intera colonna. Ma se vuoi aggregare solo una parte di una colonna? Ad esempio, potresti voler contare il numero di film usciti in un anno.

È qui che ti serve la clausola GROUP BY. GROUP BY ti permette di suddividere i dati in gruppi, che possono poi essere aggregati indipendentemente l’uno dall’altro.

D13: Conta il numero di film usciti in un anno.

Query SQL: SELECT release_year, COUNT(*) AS number_of_movies FROM films GROUP BY release_year;

Risultato: 

 

release_year

number_of_movies

1

1972

1

2

2008

1

3

1974

1

4

1993

1

5

1994

2

6

2003

1

7

1999

1

8

2010

1

9

1980

1

Esempi di query SQL da più tabelle

Finora abbiamo lavorato con una sola tabella alla volta. Ma la vera potenza dei database e di SQL deriva dalla capacità di lavorare con dati provenienti da più tabelle. 

Il termine "database relazionale" in RDBMS deriva dal fatto che le tabelle all’interno del database sono correlate tra loro. Hanno identificatori comuni che permettono di combinare facilmente i dati di più tabelle. Qui entrano in gioco le JOIN tra tabelle SQL.

Vediamo un esempio semplice per familiarizzare con la sintassi delle JOIN e imparare anche un po’ sui diversi tipi di JOIN possibili.

Consideriamo un’altra tabella chiamata ‘movieDirectors’ che contiene il nome del regista per alcuni dei film presenti nella tabella ‘films’. 

 

title

director

1

The Godfather

Francis Ford Coppola

2

The Godfather: Part II

Francis Ford Coppola

3

The Godfather: Part III

Francis Ford Coppola

4

Schindler's List

Steven Spielberg

5

The Dark Knight Rises

Christopher Nolan

Possiamo combinare i dati di queste due tabelle usando un identificatore comune: ‘title’.

D14: Aggiungi una colonna alla tabella ‘films’, popolandola con il nome del regista dalla tabella ‘movieDirectors’.

Sintassi: SELECT leftTable.column1, rightTable.column1, leftTable.column2…. FROM leftTable INNER JOIN rightTable ON leftTable.commonIdentifier = rightTable.commonIdentifier;

Query SQL: Select films.title, films.release_year, movieDirectors.director FROM films INNER JOIN movieDirectors ON films.title = movieDirectors.title

Risultato: 

 

title

release_year

director

1

The Godfather

1972

Francis Ford Coppola

2

The Godfather: Part II

1974

Francis Ford Coppola

3

Schindler's List

1993

Steven Spielberg

Diversi tipi di JOIN in SQL

JOIN

Descrizione

Diagramma

Inner Join

Restituisce solo i record che hanno valori corrispondenti in entrambe le tabelle

Inner Join

Left (Outer) Join

Restituisce tutti i record della tabella di sinistra e i record corrispondenti della tabella di destra

Left (outer) join

Right (Outer) Join

Restituisce tutti i record della tabella di destra e i record corrispondenti della tabella di sinistra

Right (outer) join

Full (Outer) Join

Restituisce tutti i record quando c’è una corrispondenza nella tabella di sinistra o di destra

Full (outer) join

Nell’esempio di query sopra, ‘films’ è la tabella di sinistra e ‘movieDirectors’ è la tabella di destra. Quindi, con l’INNER JOIN che abbiamo eseguito, abbiamo ottenuto solo i film presenti in entrambe le tabelle. Il result set è l’intersezione delle due tabelle.

SQL UNION

Le JOIN in SQL ti permettono di combinare due dataset affiancandoli. Con SQL UNION invece puoi impilare un dataset sopra l’altro. L’operatore UNION è usato per combinare il result set di due o più istruzioni SELECT quando sono rispettate le seguenti “regole”: 

  1. Ogni istruzione SELECT deve avere lo stesso numero di colonne.
  2. Le colonne devono avere tipi di dato simili.
  3. Le colonne usate nelle istruzioni SELECT devono essere nello stesso ordine.

Sintassi: SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;

Consideriamo la tabella ‘movies_2000s’:

 

title

release_year

budget

gross

imdb_score

1

Inception

2010

160000000

292568851

8.8

2

The Trial of the Chicago 7 

2020

35000000

 

7.7

Ora, se dovessimo combinare le due tabelle…

Query SQL: SELECT title FROM films UNION SELECT title FROM movies_2000s;

Risultato: 

 

title

1

The Godfather

2

The Dark Knight

3

The Godfather: Part II

4

Schindler's List

5

Pulp Fiction

6

The Lord of the Rings: The Return of the King

7

Fight Club

8

Inception

9

Star Wars: Episode V - The Empire Strikes Back

10

The Shawshank Redemption

12

The Trial of the Chicago 7 

Avrai notato che ‘Inception’ è apparso una sola volta nel result set. Questo perché UNION seleziona solo i valori distinti; se vuoi tutti i valori, puoi usare UNION ALL.

Query SQL annidate

SQL è in grado di fare meraviglie con i dati. Le query annidate sono un altro strumento che rende SQL un linguaggio che vale la pena conoscere. Una query annidata non è altro che una query all’interno di un’altra query (un po’ come i sogni in Inception!).

Con le query annidate puoi eseguire operazioni molto complesse ma in più passaggi, mantenendo leggibilità e comprensibilità del codice.

D15: Determina la redditività media dei film nella tabella ‘films’.

Suggerimento: hai calcolato la redditività in precedenza, con la D3. Ora devi prendere il risultato di quella query e applicarvi la funzione AVG.

Query SQL annidata: 

SELECT AVG(*) AS average_profit FROM 

(SELECT title, (gross - budget) AS movie_profit FROM films where gross > budget);

Abbiamo rimosso il valore negativo di ‘Fight Club’ nel calcolo all’interno della query SQL interna aggiungendo gross > budget. 

Nella query annidata sopra, prima viene eseguita la query interna e quindi questo result set viene usato come tabella temporanea da cui la query esterna interroga e ottiene i dati. 

Non approfondiremo troppo l’argomento delle query annidate in SQL. Ma ti consigliamo vivamente di seguire il corso Intermediate SQL di DataCamp per padroneggiare le query SQL. Giocherai con l’European Soccer Database mentre impari di più sulle query annidate. Imparerai anche le istruzioni CASE e le window function: argomenti che non abbiamo potuto trattare in questo tutorial sulle query SQL. 

Considerazioni finali

Hai imparato molto sulle query SQL e sei in una posizione ottima per iniziare il tuo percorso con problemi reali risolti con SQL. In questo tutorial sulle query SQL hai imparato cos’è una query SQL e come scrivere query SQL. 

Hai visto la sintassi delle query e risposto ad alcune domande lungo il percorso. Siamo partiti da esempi semplici usando le istruzioni SELECT - FROM - WHERE e siamo arrivati a query SQL leggermente più complesse usando join, union e query annidate. 

Abbiamo coperto molto nel tutorial, tuttavia questa NON è una lista esaustiva di tutte le possibili query SQL semplici e avanzate: ce ne sono molte altre. E ti consigliamo vivamente di seguire il percorso SQL Fundamentals di DataCamp per ottenere una comprensione più profonda e completa di SQL. 

Ricorda, la pratica è la chiave per padroneggiare qualsiasi competenza e SQL non fa eccezione! La pratica porterà le tue capacità SQL da principiante ad avanzato.

Allora, inizia subito e buone query!

Argomenti
SQL
Data Science

Corsi di SQL

Corso

Analizzare i dati aziendali in SQL

4 ore
48.4K
Impara a scrivere query SQL per calcolare le metriche chiave che le aziende usano per misurare le prestazioni.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro