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

Esercitazioni di SQL per studenti: 11 esercizi pratici di base su SQL con soluzioni

Appello a tutti gli studenti! Siete curiosi di SQL? Volete imparare o migliorare le vostre competenze in SQL? Questo articolo contiene 11 esercizi pratici di SQL con soluzioni dettagliate.

Avete mai sentito dire che "la pratica rende perfetti"? Probabilmente sì, ed è per questo che siete alla ricerca di risorse per la pratica di SQL. Se volete sviluppare competenze forti o diventare esperti in un determinato settore, dovete esercitarvi.

Come ha scritto Rebecca McKeown nel suo eccezionale articolo Learning SQL? 12 Ways to Practice SQL Online: "Tutta teoria e niente pratica vi renderà un utente SQL frustrato!". E ha ragione! Ogni volta che si impara un nuovo concetto, è necessario applicarlo subito facendo pratica. Questo è lo scopo degli esercizi presentati in questo articolo.

La maggior parte degli esercizi che seguono sono tratti dal nostro corso interattivo SQL Practice: University. Questo corso interattivo online è pensato per chi conosce SQL e cerca esercizi pratici su query a tabella singola, join, ordinamento, raggruppamento, aggregazione e altro ancora. Fa parte del nostro Pratica su SQL che contiene altri corsi pratici di SQL per principianti.

11 Esercizi pratici di SQL di base con soluzioni

Panoramica di un esercizio interattivo su LearnSQL.it.

Ma forse non volete ancora impegnarvi in un corso completo. Non c'è problema! Questi 11 esercizi vi aiuteranno ad esercitarvi e a migliorare le vostre competenze in SQL, senza costi e senza impegno! Allacciate le cinture di sicurezza e cominciamo!

Migliorare il vostro SQL Practice

I nostri esercizi di SQL sono perfetti per gli studenti: Utilizzerò il modello universitario, che dovrebbe esservi familiare! Ecco le tabelle che utilizzeremo durante gli esercizi:

  • student contiene i dati di base degli studenti universitari: nome, cognome, e-mail, data di nascita e data di inizio.
  • lecturer contiene i dati di base relativi ai docenti: nome, cognome, laurea ed e-mail.
  • academic_semester contiene informazioni di base relative ai semestri accademici: anno solare, trimestre, data di inizio e data di fine.
  • course_edition è una tabella utilizzata per unire le altre tre tabelle: course (che non utilizzeremo in questo articolo), academic_semester, e lecturer.
11 Esercizi pratici di SQL di base con soluzioni

Se volete esercitarvi a utilizzare l'intero database universitario, visitate il corso di base SQL Practice: Università. (Abbiamo un'offerta speciale e prezzi speciali per studenti e insegnanti! Se siete interessati, date un'occhiata ai nostri corsi SQL per studenti ).

11 Esercizi di base su SQL Practice

In questa sezione, fornirò 11 esercizi pratici di SQL con le relative soluzioni. La difficoltà aumenterà gradualmente: Inizierò con esercizi molto facili e generici e introdurrò nuovi concetti di SQL poco a poco.

Siete pronti a migliorare la vostra pratica di SQL?

Esercizio 1: Elenco di tutti gli studenti

Esercizio

Selezionare tutti i dati degli studenti nel database.

Soluzione

SELECT * 
FROM student;

Spiegazione

Vogliamo recuperare le informazioni sugli studenti dal database. Pertanto, occorre utilizzare la clausola SELECT e la clausola FROM sulla tabella student tabella. Il simbolo dell'asterisco (*) viene utilizzato come abbreviazione per rappresentare i nomi di tutte le colonne della tabella students. Si noti che tutte le istruzioni SQL terminano con il carattere punto e virgola (;).

Esercizio 2: Elencare tutti i nomi degli studenti

Esercizio

Selezionare il nome e il cognome di tutti gli studenti.

Soluzione

SELECT first_name, last_name
FROM student;

Spiegazione

Questa volta vogliamo recuperare informazioni parziali dal database. Possiamo farlo facilmente indicando il nome delle colonne che vogliamo recuperare, in questo caso first_name e last_name. I nomi delle colonne sono separati da una virgola e seguiti dall'istruzione FROM con il nome della tabella (student).

Esercizio 3: Selezionare un docente specifico per ID

Esercizio

Selezionare l'e-mail del docente con ID 5 dal database.

Soluzione

SELECT email
FROM lecturer
WHERE id = 5;

Spiegazione

Questa volta vogliamo recuperare le informazioni sui docenti dal database. Pertanto, è necessario utilizzare la clausola SELECT e la clausola FROM sulla tabella. lecturer tabella.

In un database, ogni tabella ha solitamente una colonna chiave primaria (generalmente chiamata ID) che rappresenta un identificatore unico per ogni voce. In questo esercizio, si recupera un solo docente (cioè una riga) dalla tabella. lecturer tabella. Lo si fa con la clausola WHERE con la condizione id=5.

In questo caso, utilizziamo l'operatore di confronto "uguale" (=). Si potrebbe anche scrivere una condizione con altri operatori di confronto, come >, <, >=, <=, o <> (non uguale a).

Esercizio 4: Selezionare gli studenti per cognome

Esercizio

Selezionare tutti i dati relativi agli studenti il cui cognome è Durrand.

Soluzione

SELECT *
FROM student
WHERE last_name = 'Durrand';

Spiegazione

Tornare alla student tabella! In questo esercizio vogliamo recuperare tutti gli studenti il cui cognome è Durrand. La colonna last_name consente di duplicare i valori; pertanto, utilizzando la clausola WHERE, è possibile restituire più righe.

Si noti che in SQL si usano gli apici singoli (') per racchiudere i valori di testo (‘Durrand’).

Esercizio 5: Selezionare gli studenti il cui cognome inizia per D

Esercizio

Selezionare il nome e il cognome degli studenti il cui cognome inizia con la lettera D.

Soluzione

SELECT first_name, last_name
FROM student
WHERE last_name LIKE 'D%';

Spiegazione

In questo esercizio non si cercano studenti con un cognome esatto, ma studenti il cui cognome inizia con una lettera specifica (D). L'operatore di confronto equal (=) non può essere utilizzato in questo esercizio perché non stiamo cercando una corrispondenza esatta. Fortunatamente, SQL mette a disposizione l'operatore LIKE che ci permette di cercare un modello specifico.

L'uso della clausola WHERE in combinazione con l'operatore LIKE sulla colonna last_name è sufficiente! Il carattere percentuale (%) viene utilizzato per rappresentare zero, uno o più caratteri. Pertanto, ‘D%’ significa "Un nome che inizia con D seguito da zero, uno o molti altri caratteri".

Vi piacciono gli esercizi di questo articolo? Potete trovarne altri nell'eccellente articolo 10 Esercizi per principianti su SQL Practice con soluzioni del mio amico Tihomir Babic.

Esercizio 6: Utilizzare condizioni multiple per selezionare un semestre accademico

Esercizio

Selezionate tutti i dati relativi ai semestri accademici in cui sono soddisfatte queste due condizioni: l'anno è il 2020 e il trimestre è la primavera.

Soluzione

SELECT *
FROM academic_semester
WHERE calendar_year = 2020
  AND term = 'spring';

Spiegazione

Questa volta ci viene chiesto di recuperare le informazioni relative ai semestri accademici. Per ottenere ciò, eseguiremo una clausola SELECT sulla tabella academic_semester per ottenere questo risultato. Rispetto agli esercizi precedenti, c'è una novità: abbiamo due condizioni!

Vi chiederete se in SQL sono ammesse condizioni multiple; sì, lo sono! L'unica cosa da fare è utilizzare un operatore logico in combinazione con la clausola WHERE. SQL mette a disposizione tre operatori logici: AND, OR, e NOT. In questo esercizio, vogliamo che le due condizioni siano soddisfatte, quindi utilizziamo l'operatore logico AND.

Si noti che la colonna calendar_year è di tipo intero, mentre il termine è una stringa. Per questo motivo non usiamo le virgolette quando cerchiamo 2020 in calendar_year e usiamo le virgolette singole quando cerchiamo il termine 'Primavera'.

Esercizio 7: Ordinare gli studenti per cognome

Esercizio

Selezionare il cognome e la data di nascita degli studenti nati nel 2003 o dopo e ordinarli per cognome in ordine decrescente (da Z ad A).

Soluzione

SELECT last_name, birth_date
FROM student
WHERE birth_date >= '2003-01-01'
ORDER BY last_name DESC;

Spiegazione

In questo esercizio, recuperiamo tutti gli studenti nati il 1° gennaio 2003 o dopo. Pertanto, il nostro filtro si applicherà alla colonna birth_date della tabella. student della tabella.

Se si guarda di nuovo al diagramma del database fornito all'inizio di questo articolo, si noterà che la colonna birth_date ha un tipo di dati date.

In SQL, le date vengono memorizzate nel seguente ordine: anno, mese e giorno. Si tratta del formato yyyy-mm-dd. Ad esempio, il 10 gennaio 2023 viene memorizzato come 2023-01-10 in un database.

SQL utilizza anche gli apici singoli per racchiudere le date (10 gennaio 2023 è scritto come ‘2023-01-10’) e i confronti sono consentiti sulle date. Pertanto, per costruire la query di cui abbiamo bisogno, utilizziamo la clausola WHERE con il simbolo di confronto maggiore o uguale a (>=) sulla data di nascita.

Successivamente ordiniamo il risultato per cognome grazie alla parola chiave ORDER BY. La parola chiave DESC indica che il risultato sarà ordinato in ordine decrescente (da Z ad A). Se si desidera ordinare in ordine crescente, utilizzare la parola chiave ASC.

Esercizio 8: Studenti nati tra il 2003 e il 2004

Esercizio

Selezionare dal database il nome, il cognome e la data di nascita degli studenti nati tra il 2003 e il 2004.

Soluzione

SELECT first_name, last_name, birth_date
FROM student
WHERE birth_date >= '2003-01-01'
AND birth_date <='2004-12-31';

Spiegazione

In questo esercizio, si recuperano i record di tutti gli studenti nati il 1° gennaio 2003 o dopo, e prima del 31 dicembre 2003 o dopo. Utilizziamo la clausola SELECT.

Abbiamo visto nell'esercizio precedente che i confronti sono consentiti sulle date, quindi la nostra condizione qui è  birth_date >= '2003-01-01' AND birth_date <='2004-12-31'

Esercizio 9: Conteggio degli studenti per ogni data di inizio

Esercizio

Selezionare la data di inizio per tutti gli studenti e mostrare quanti studenti hanno la stessa data di inizio.

Soluzione

SELECT start_date, COUNT(*)
FROM student
GROUP BY start_date;

Spiegazione

In questo esercizio si vuole recuperare la data di inizio per tutti gli studenti e mostrare quanti studenti hanno la stessa data di inizio. In pratica, abbiamo bisogno di una colonna che mostri le date di inizio senza valori duplicati e di un'altra colonna che mostri il numero di studenti con date di inizio identiche.

L'istruzione GROUP BY consente di raggruppare le righe con gli stessi valori (in questo caso, la data di inizio). Inoltre, si utilizza la funzione aggregata COUNT() per mostrare il numero di righe che corrispondono al valore della data di inizio.

Esercizio 10: Selezionare, raggruppare e filtrare i risultati

Esercizio

Trovare le date di inizio in cui ci sono più di 15 studenti. Visualizzare la data di inizio e il numero di studenti che hanno iniziato in questa data.

Soluzione

SELECT start_date, COUNT(*)
FROM student
GROUP BY start_date
HAVING COUNT(*) > 15;

Spiegazione

Vogliamo eseguire la stessa query dell'esercizio precedente, ma con una piccola differenza: vogliamo filtrare i risultati per mostrare solo quelli che corrispondono a una certa quantità.

Allo stesso modo, eseguiamo una SELECT sulla tabella student tabella. Raggruppiamo i risultati per data di inizio e utilizziamo la funzione aggregata COUNT(). Infine, si utilizza la clausola HAVING alla fine della query per rimuovere dal set di risultati le date di inizio con meno di 15 studenti.

Esercizio 11: Quanti corsi insegna ogni docente?

Esercizio

Per ogni docente, scoprire quanti corsi insegna in ogni semestre accademico. Indicare il nome e il cognome del docente, l'anno solare, il trimestre e il numero di corsi tenuti dal docente in questo semestre.

Soluzione

SELECT
   lec.first_name,
   lec.last_name,
   acs.calendar_year,
   acs.term,
   COUNT(course_id)
FROM lecturer AS lec
JOIN course_edition AS ce 
  ON ce.lecturer_id = lec.id
JOIN academic_semester AS acs 
  ON ce.academic_semester_id = acs.id
GROUP BY lec.id, acs.id;

Spiegazione

Questo esercizio è un po' più difficile. Dobbiamo unire tre tabelle: lecturer, course_edition, e academic_semester. Lo facciamo utilizzando l'operatore JOIN. Poi utilizziamo la clausola GROUP BY per raggruppare le edizioni dei corsi tenuti dallo stesso docente nello stesso semestre accademico. Infine, utilizziamo la funzione COUNT() per contare quanti corsi ha un docente in questo semestre.

L'articolo SQL Joins: 12 domande pratiche con risposte dettagliate di Tihomir Babic contiene altre esercitazioni sui join SQL, se siete interessati.

Avete voglia di saperne di più SQL Practice?

Spero davvero che questo articolo vi abbia fatto fare pratica con SQL e vi abbia ispirato a iniziare un percorso di apprendimento di SQL!

Se vi piacciono gli esercizi di questo articolo, ricordate che la maggior parte di essi sono tratti dal corso SQL Practice: University on LearnSQL.it. Fa parte del nostro percorso Pratica su SQL, che contiene altri 8 corsi e quasi 1.000 esercizi: un sacco di esperienza pratica!

Se volete immergervi in profondità in SQL, vi consiglio il nostro pacchetto Tutto per Sempre . Questa offerta contiene tutti i corsi SQL attuali e futuri in quattro diversi dialetti SQL. Abbiamo anche un' offerta speciale per gli studenti.

Grazie per aver letto questo articolo; ci vediamo nel prossimo!