Ciao a tutti! Oggi ci immergiamo nel mondo delle query SQL attraverso un esercizio pratico che vi aiuterà a familiarizzare con le operazioni di base e avanzate su un database chiamato dbauto. SQL (Structured Query Language) è uno strumento essenziale per chi lavora con i dati, permettendo di estrarre, manipolare e analizzare informazioni in modo efficiente. Che siate principianti o abbiate già un po’ di esperienza, questo laboratorio vi offrirà l’opportunità di mettere in pratica le vostre conoscenze e di scoprire nuove funzionalità.
In questo articolo, esploreremo il database dbauto, composto da tre tabelle principali: automobili, marche e proprietari. Vedremo come eseguire diverse query per estrarre informazioni utili e come utilizzare funzioni aggregate, clausole GROUP BY, ORDER BY e molto altro. Alla fine di questa lezione, avrete acquisito una solida comprensione di come interrogare un database e come applicare queste competenze in contesti reali.
Descrizione del Database
Prima di iniziare con le query, è importante comprendere la struttura del database dbauto. Questo database è composto da tre tabelle principali:
- automobili: Contiene informazioni dettagliate sulle auto, tra cui:
- Targa: Identificativo unico dell’auto.
- Cilindrata: La cilindrata del motore.
- Prezzo: Il prezzo dell’auto.
- Modello: Il modello dell’auto.
- Colore: Il colore dell’auto.
- Marca: La marca dell’auto.
- Alimentazione: Tipo di alimentazione (benzina, diesel, ecc.).
- CodP: Codice del proprietario.
- marche: Contiene informazioni sulle marche delle automobili, tra cui:
- Nome: Nome della marca.
- Sede: Sede principale della marca.
- Nazione: Nazione di origine della marca.
- proprietari: Contiene informazioni sui proprietari delle auto, tra cui:
- Codice: Codice unico del proprietario.
- Cognome: Cognome del proprietario.
- Nome: Nome del proprietario.
- Indirizzo: Indirizzo del proprietario.
- Città: Città di residenza del proprietario.
Popolare il Database
Il database è già popolato con i dati forniti nel file dbauto.sql, ma se volete aggiungere ulteriori dati per testare le query, potete eseguire i seguenti comandi SQL:
-- Aggiunta di nuove automobili INSERT INTO `automobili` (`Targa`, `Cilindrata`, `Prezzo`, `Modello`, `Colore`, `Marca`, `Alimentazione`, `CodP`) VALUES ('EF123GH', 1500, 18000, 'GOLF', 'NERO', 'VOLKSWAGEN', 'BENZINA', 2), ('GH456IJ', 2000, 22000, 'PASSAT', 'BIANCO', 'VOLKSWAGEN', 'DIESEL', 3); -- Aggiunta di nuove marche INSERT INTO `marche` (`Nome`, `Sede`, `Nazione`) VALUES ('VOLKSWAGEN', 'WOLFSBURG', 'GERMANIA'), ('AUDI', 'INGOLSTADT', 'GERMANIA'); -- Aggiunta di nuovi proprietari INSERT INTO `proprietari` (`Codice`, `Cognome`, `Nome`, `Indirizzo`, `Citta`) VALUES (7, 'FERRARI', 'LUCA', 'VIA TORINO 15', 'GENOVA'), (8, 'RUSSO', 'GIULIA', 'VIA FIRENZE 20', 'FIRENZE');
Query SQL da Eseguire
Ora che il database è pronto, possiamo iniziare a eseguire alcune query per estrarre informazioni utili. Di seguito sono riportate alcune query di esempio:
1. Conteggio delle automobili per marca
SELECT Marca, COUNT(*) AS NumeroAuto FROM automobili GROUP BY Marca ORDER BY NumeroAuto DESC;
Questa query conta quante auto ci sono per ogni marca e le ordina in ordine decrescente.
2. Prezzo medio delle automobili per colore
SELECT Colore, AVG(Prezzo) AS PrezzoMedio FROM automobili GROUP BY Colore ORDER BY PrezzoMedio DESC;
Questa query calcola il prezzo medio delle auto per ogni colore.
3. Numero di automobili per tipo di alimentazione
SELECT Alimentazione, COUNT(*) AS NumeroAuto FROM automobili GROUP BY Alimentazione ORDER BY NumeroAuto DESC;
Questa query conta quante auto ci sono per ogni tipo di alimentazione (benzina, diesel, ecc.).
4. Automobili con prezzo superiore alla media
SELECT Targa, Modello, Prezzo FROM automobili WHERE Prezzo > (SELECT AVG(Prezzo) FROM automobili) ORDER BY Prezzo DESC;
Questa query seleziona le auto il cui prezzo è superiore alla media.
5. Conteggio delle automobili per proprietario
SELECT CodP, COUNT(*) AS NumeroAuto FROM automobili GROUP BY CodP HAVING COUNT(*) > 1 ORDER BY NumeroAuto DESC;
Questa query conta quante auto possiede ogni proprietario, mostrando solo quelli con più di un’auto.
6. Automobili con cilindrata maggiore di 1500 e prezzo inferiore a 20000
SELECT Targa, Modello, Cilindrata, Prezzo FROM automobili WHERE Cilindrata > 1500 AND Prezzo < 20000 ORDER BY Cilindrata DESC;
Questa query seleziona le auto con cilindrata superiore a 1500 e prezzo inferiore a 20000.
7. Marche con più di 2 automobili nel database
SELECT Marca, COUNT(*) AS NumeroAuto FROM automobili GROUP BY Marca HAVING COUNT(*) > 2 ORDER BY NumeroAuto DESC;
Questa query mostra le marche che hanno più di 2 auto nel database.
8. Automobili ordinate per prezzo decrescente
SELECT Targa, Modello, Prezzo FROM automobili ORDER BY Prezzo DESC;
Questa query ordina le auto in base al prezzo, dalla più costosa alla meno costosa.
9. Conteggio delle automobili per nazione della marca
SELECT m.Nazione, COUNT(*) AS NumeroAuto FROM automobili a JOIN marche m ON a.Marca = m.Nome GROUP BY m.Nazione ORDER BY NumeroAuto DESC;
Questa query conta quante auto ci sono per ogni nazione di origine della marca.
Istruzioni per l’Esercizio
- Esegui il codice DDL per popolare il database con ulteriori dati.
- Esegui ciascuna delle query SQL fornite e osserva i risultati.
- Modifica le query per esplorare ulteriormente il database, ad esempio cambiando le condizioni WHERE o HAVING.
- Crea nuove query utilizzando le funzioni aggregate e le clausole ORDER BY e GROUP BY.
Conclusione
Questo esercizio è un’ottima opportunità per approfondire la conoscenza delle query SQL, dalle operazioni di base a quelle più avanzate. Sperimentate con il database, modificate le query e create nuove interrogazioni per estrarre informazioni sempre più specifiche. Buon lavoro e buon divertimento con SQL!
Se avete domande o suggerimenti, lasciate un commento qui sotto. Non dimenticate di condividere questo post con i vostri compagni di studio e colleghi!
FAQ
1. Cos’è SQL?
SQL (Structured Query Language) è un linguaggio di programmazione utilizzato per gestire e interrogare database relazionali.
2. Quali sono le funzioni aggregate in SQL?
Le funzioni aggregate, come COUNT, SUM, AVG, MIN e MAX, permettono di eseguire calcoli su un insieme di righe.
3. Come posso unire più tabelle in SQL?
Puoi unire più tabelle utilizzando la clausola JOIN, che permette di combinare righe da due o più tabelle in base a una condizione specifica.
4. Qual è la differenza tra WHERE e HAVING?
La clausola WHERE filtra le righe prima che vengano raggruppate, mentre HAVING filtra i gruppi dopo che sono stati creati.
Risorse Aggiuntive
Buon coding! 🚀