Database per esercitarsi
- #sql
- #programmazione
- #base di dati
- #database
- #esercizi
In questa lezione
Qui puoi scrivere ed eseguire query SQL direttamente nel browser, senza installare niente.
Ogni editor carica uno dei database di esempio: clicca il nome di una tabella per vederne il contenuto,
scrivi la tua query e premi Esegui (oppure Ctrl + Invio).
Come funziona
Le query vengono eseguite con SQLite dentro il browser. Ad ogni esecuzione il database riparte da zero,
quindi puoi provare INSERT, UPDATE e DELETE senza paura di rovinare i dati.
La sintassi è quasi identica a quella di MySQL; alcune funzioni hanno nomi diversi
(ad esempio si usa strftime('%Y', data) al posto di YEAR(data)).
Database “Scuola”
Scuole, classi, studenti, insegnanti e lezioni (quale insegnante insegna in quale classe).
-- Studenti con la loro classe e la loro scuola
SELECT s.nome, s.cognome, c.nome AS classe, sc.nome AS scuola
FROM Studente s
JOIN Classe c ON s.fk_classe = c.id_classe
JOIN Scuola sc ON c.fk_scuola = sc.id_scuola
ORDER BY sc.nome, c.nome;
Esercizi
- Elenca tutti gli studenti della classe con
id_classe = 3. - Conta quanti studenti ci sono in ogni classe (
GROUP BY). - Trova le scuole di tipo
'Liceo'e le loro classi. - Elenca gli insegnanti che insegnano in almeno due classi diverse (
HAVING).
Database “Eventi” (Vaccari)
Utenti che pubblicano eventi, con i commenti e i voti degli altri utenti.
È un database piccolo: alcuni eventi non hanno ancora luogo e categoria (NULL).
-- Eventi con chi li ha inseriti, numero di commenti e voto medio
SELECT e.titoloevento, e.dataevento, e.artista,
u.nickname AS inserito_da,
COUNT(c.idcommento) AS commenti,
AVG(c.voto) AS voto_medio
FROM eventi e
JOIN utenti u ON e.inserito_da = u.Idutente
LEFT JOIN commenti c ON c.idevento = e.ideventi
GROUP BY e.ideventi
ORDER BY e.dataevento;
Esercizi
- Elenca i commenti con il nickname dell’utente che li ha scritti.
- Trova gli eventi che non hanno nessun commento (
LEFT JOIN ... IS NULL). - Con un
UPDATEassegna un luogo all’evento 3, poi mostra gli eventi con il nome del luogo e la città. Perché conJOINl’evento 2 sparisce e conLEFT JOINno?
Database “Viaggi”
Autisti, passeggeri, viaggi e giudizi reciproci. Questo database contiene solo la struttura:
il primo esercizio è popolarlo con qualche INSERT.
INSERT INTO Autista (id_autista, nome, cognome) VALUES (1, 'Luca', 'Rossi');
INSERT INTO Viaggio (id_viaggio, partenza, arrivo, costo, fk_autista)
VALUES (1, 'Parma', 'Bologna', 12.5, 1);
SELECT v.partenza, v.arrivo, v.costo, a.nome || ' ' || a.cognome AS autista
FROM Viaggio v
JOIN Autista a ON v.fk_autista = a.id_autista;
Scarica i database
Se vuoi usarli in MySQL o in un altro DBMS, puoi scaricare i file .sql: