Blog

Database 5 esercizi con SQL

 Nel mondo dell’informatica i database ricoprono un ruolo cruciale. Per questo il ruolo del programmatore deve avere un’ampia conoscenza dei database e del loro utilizzo. Per interagire con un database, il linguaggio universale adottato è quello SQL, da anni ormai integrato come standard per gestire i database.

Cos’è un database?

Secondo Oracle un database è un insieme di informazioni (o dati) strutturati e archiviati elettronicamente in un sistema informatico. Di solito, il database viene controllato da un sistema DBMS (Database Management System). Si fa riferimento ai dati, al sistema DBMS e alle applicazioni associate come sistema di database, spesso abbreviato solo in database. Un database può essere di vari tipi, il più utilizzato e conosciuto è il database relazionale.

Per prendere dimestichezza con i database bisogna imparare il linguaggio SQL. 

Cos’è SQL?

Il significato di SQL corrisponde ad un acronimo: Structured Query Language, è un linguaggio di programmazione utilizzato da quasi tutti i database relazionali per eseguire query, manipolare e definire i dati, nonché fornire il controllo dell’accesso. Sviluppato per la prima volta negli anni ’70 e ancora oggi fondamentale per la gestione dei DB.

Una volta fissati questi concetti, per imparare il linguaggio SQL e la logica dietro i database relazionali, è importante esercitarsi. Fa parte del processo d’apprendimento, come lo è per tutti i linguaggi di programmazione.

Per farlo vedremo una serie di esercizi sul linguaggio SQL, di difficoltà graduale, in modo tale da ricoprire tutte le peculiarità del linguaggio.

  1. Scrivi un’istruzione SQL per creare un prodotto cartesiano tra venditore e cliente, ovvero, ogni venditore apparirà per tutti i clienti e viceversa per quel venditore che appartiene a quella città. 

Nome tabella: venditore

Venditore_idNome_venditoreCittàCommissione
5001Mario RossiNapoli0.15
5002Franco NeriPalermo0.13
5005Gigi ProiettiRoma0.11
5006Michele ChetoneTreviso0.14
5007Davide GuidiPordenone0.13

 

Nome tabella: cliente

Cliente_idNome_clienteCittàCategoriaVenditore_id
3002Giuseppe VerdiRoma1005001
3007Max AngioniRoma2005001
3005Nicola di BariBari2005002
3008Antonio ClericiNapoli3005002
3004Simone VespaVenezia3005006
3009Ezio GreggioTreviso1005007

 

  1. Dalla tabella seguente, scrivi una query SQL per trovare tutti i clienti. Ordina il set di risultati per cliente_id. Restituisci nome_cliente, città, categoria.

Nome tabella: cliente

Cliente_idNomeCittàCategoriaVenditore_id
3002Giuseppe VerdiRoma1005001
3007Max AngioniRoma2005001
3005Nicola di BariBari2005002
3008Antonio ClericiNapoli3005002
3004Simone VespaVenezia3005006
3009Ezio GreggioTreviso1005007

 

  1. Dalle tabelle riportate nell’esercizio 1, scrivi una query SQL per individuare tutti i clienti e il venditore che lavora per loro. Restituisci il nome del cliente e il nome del venditore.
  2. Dalla tabella seguente, scrivi una query SQL per trovare tutte le e-mail duplicate (senza lettere maiuscole) dei dipendenti. Restituisci e-mail_id.

Nome tabella: dipendenti

Dipendente_idNome_dipendentee-mail_id
100Giuseppe Verdigiu.verdi@abc.com
101Paolo Limitilimiti@abc.com
102Davide Guidiguidi@abc.com
103Antonio Clericiclerici@abc.com
104Simone Vespavespa@abc.com

 

  1. Dalle tabelle seguenti scrivi una query SQL per trovare quegli studenti che hanno ottenuto il 100% dei voti in ogni materia per tutto l’anno. Restituisci l’ID della materia, il nome della materia, gli studenti per tutto l’anno.

Nome tabella: test_esame

Esame_idMateria_idAnno_esameNum_studenti
7120120175146
7120120183545
7120220185945
7120220192500
7120320172500
7220120183500
7220220173651
7320120182647

 

Si possono svolgere tantissime operazioni tramite il linguaggio SQL, è possibile incrociare i dati in differenti modi, partendo da semplici tabelle, svolgendo operazioni di calcolo sui dati contenuti, quando possibile, oppure creare nuove viste in base alle informazioni che abbiamo a disposizione. È un requisito fondamentale per la carriera di un programmatore, specialmente per un web developer. È uno dei linguaggi in cui la pratica conta di più, perché soltanto vedendo i risultati di una query si capisce davvero come modellare i dati e come i vari operatori logici (e non) li trattano in SQL. Vediamo insieme le soluzioni:

  1. La query da scrivere in questo esercizio è molto basilare. Per iniziare, ti aiuta a capire come funzionano le varie keyword del linguaggio SQL (SELECT, FROM, etc…)
SELECT *
FROM venditore a
CROSS JOIN cliente b
WHERE a.città IS NOT NULL;

 

  1. Spesso ordinare le tabelle aiuta molto nel capire come strutturare la query. In questo esercizio puoi apprendere la funzionalità dell’operatore di raggruppamento ORDER BY.
SELECT nome,città,categoria
FROM cliente
ORDER BY cliente_id;

 

  1. Nel paragrafo precedente abbiamo parlato di “incrociare i dati”. Questo esercizio ti fa capire come farlo, scrivendo una query molto semplice tra due tabelle con delle informazioni in comune. 
SELECT cliente.nome_cliente, nome_venditore
FROM cliente,venditore
WHERE venditore.venditore_id = cliente.venditore_id;

 

  1. Questo esercizio, un po’ più articolato, mette insieme tutti i concetti visti finora, in più ci fa capire come creare una nuova vista (tabella) incrociando i dati di quelle esistenti.
CREATE TABLE IF NOT EXISTS dipendenti(dipendenti_id int, nome_dipendente varchar(255), email_id varchar(255));
TRUNCATE TABLE dipendenti;
INSERT INTO dipendenti (dipendenti_id, nome_dipendente, email_id) VALUES ('100','Giuseppe Verdi', ' giu.verdi@abc.com ');
INSERT INTO dipendenti (dipendenti_id, nome_dipendente, email_id) VALUES ('101','Paolo Limiti', 'limiti@abc.com');
INSERT INTO dipendenti (dipendenti_id, nome_dipendente, email_id) VALUES ('102','Davide Guidi', 'guidi@abc.com');
INSERT INTO dipendenti (dipendenti_id, nome_dipendente, email_id) VALUES ('103','Antonio Clerici', 'clerici@abc.com');
INSERT INTO dipendenti (dipendenti_id, nome_dipendente, email_id) VALUES ('104','Simone Vespa', 'vespa@abc.com');
SELECT * FROM dipendenti;
SELECT email_id FROM
(
SELECT email_id, COUNT(email_id) AS nuOfAppearence
FROM dipendenti
GROUP BY email_id
) AS countEmail
WHERE nuOfAppearence> 1;
  1. Infine, ancora un esercizio più completo. In questo caso dovrai lavorare molto sui singoli dati, andando ad utilizzare più operatori, di calcolo, di inserimento e di gestione delle tabelle.
CREATE TABLE test_esame (esame_id int NOT NULL, materia_id int NOT NULL, anno_esame int NOT NULL, num_studenti int,
PRIMARY KEY (esame_id, materia_id, anno_esame));
INSERT INTO test_esame VALUES (71,201,2017,5146);
INSERT INTO test_esame VALUES (72,202,2017,3651);
INSERT INTO test_esame VALUES (73,202,2018,4501);
INSERT INTO test_esame VALUES (71,202,2018,5945);
INSERT INTO test_esame VALUES (73,201,2018,2647);
INSERT INTO test_esame VALUES (71,201,2018,3545);
INSERT INTO test_esame VALUES (73,201,2019,2647);
CREATE TABLE test_materia (materia_id int NOT NULL unique, nome_materia varchar(255));
INSERT INTO test_materia VALUES (201,Matematica);
INSERT INTO test_materia VALUES (202,Fisica);
INSERT INTO test_materia VALUES (203,Chimica);
SELECT s.materia_id, p.nome_materia,
SUM(s.num_studenti) 'Studenti per l’intero anno'
FROM test_esami s
JOIN test_materia p
ON s. materia_id = p. materia_id
GROUP BY s. materia_id;
SELECT s1.materia_id, p.nome_materia,s1.anno_esame as primo_anno, s1.num_studenti
FROM test_esame s1
JOIN test_materia p on s1.materia_id = p.materia_id
JOIN (SELECT materia_id, min(anno_esame) min_anno
FROM test_esame GROUP BY materia_id) s2
ON s1.materia_id = s2.materia_id
AND s1.anno_esame = s2.min_anno;

 

Svolgere esercizi di coding online per prendere confidenza con i database, le loro tabelle e gli operatori del linguaggio SQL è una fase necessaria per poter gestire i dati senza dover rallentare il proprio percorso di apprendimento. Se ti sono piaciuti questi semplici esercizi SQL e vuoi approfondire questo linguaggio consulta la nostra guida SQL in italiano.

Articoli correlati

Il linguaggio HTML (Hypertext Markup Language) è uno dei più conosciuti e diffusi: lo si trova infatti praticamente in tutte le pagine web esistenti. È una scelta popolare tra i principianti che si…
Essere uno sviluppatore web vuol dire imparare più linguaggi di programmazione per poter creare diversi tipi di applicazioni.  Per ogni applicazione, la maggior parte delle volte, …
Un buon programmatore, si sa, necessita di un ampio bagaglio di conoscenze per potersi districare tra le difficoltà che questo mestiere comporta. Oggi le richieste sul mercato sono molteplic…
Il settore tech è appannaggio esclusivo della popolazione maschile? Questo preconcetto è abbastanza diffuso, ma come stanno davvero le cose? Oggigiorno il mondo tech, non solo in Italia, è in gran …
Offrire agli utenti di un sito o di un’applicazione un’esperienza di utilizzo positiva è cruciale per creare un prodotto che soddisfi le aspettative del committente. Ecco perché, tra le mansion…
Valutare in modo accurato i tempi di lavoro è un fattore importante per mantenere alta la produttività del team e completare progetti nei tempi prestabiliti. È utile, inoltre, per tenere aggiornati…

Seguici su Facebook

Scopri di più sul corso Hackademy

Inizia la tua nuova carriera nel mondo digital e tech.

Candidati ora

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.

Pagamento rateale

Valore della rata: A PARTIRE DA 112 €/mese.

Esempio di finanziamento  

Importo finanziato: € 2440 in 24 rate da € 112 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 2788,68.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 183 €/mese.

Esempio di finanziamento 

Importo finanziato: € 3990 in 24 rate da € 183 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 4496,56.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.