Corso di
Laurea in Ingegneria dell'Informazione - SAPIENZA Università
di Roma - Sede di LT
Corso di
Basi di Dati ed Ingegneria del Software - A.A. 2013/2014
Esercitazione
Autoguidata su SQL
OBIETTIVI DELL'ESERCITAZIONE:
Utilizzare l'interprete di comandi mysql
(client) per accedere al DBMS MySQL 5
(server) per:
- creare una base dati e le tabelle in essa contenute
- effettuare interrogazioni
INSTALLAZIONE CLIENT E
CONNESSIONE
Se siete in laboratorio, operate come indicato nelle precedenti esercitazioni
su SQL. Se la cartella basi_di_dati è già presente sul
desktop della macchina che state utilizzando non è necessario ricrearla.
1. CONNETTERSI AL SERVER E CREARE UNA BASE DI DATI
Operate come indicato al punto
1 della prima
esercitazione di laboratorio su SQL. Per questa esercitazione
create la base dati db3_studi,
sostituendo ad i il numero assegnatovi per questa esercitazione.
2. CREARE LE TABELLE
Si considerino le seguenti tabelle:
- la tabella STRUMENTI, che descrive
gli strumenti musicali, indicandone la categoria di appartenenza
(Ottoni, Ritmica, ecc.) contenente i seguenti attributi:
- nome: stringa di massimo 20 caratteri (chiave primaria);
- categoria: stringa di massimo 20 caratteri, che assume
la stringa 'Non Specificato' come valore di default;
- la tabella MUSICISTI, che
rappresenta i dati anagrafici dei musicisti, contenente i seguenti
attributi
- codice: stringa di 7 caratteri (chiave primaria);
- nome: stringa di massimo 20 caratteri;
- cognome: stringa di massimo 20 caratteri;
- datanascita;
- sesso: un carattere che assume solo i valori 'M' o 'F';
Si noti che nella tabella MUSICISTI
non ci sono due musicisti con lo stesso nome, cognome e data di
nascita, e gli attributi nome cognome e data di nascita non possono
assumere valori nulli.
- la tabella ABILITA, che indica gli
strumenti suonati dai musicisti, contenente i seguenti attributi:
- musicista: stringa di 7 caratteri che referenzia il
campo codice nella tabella MUSICISTI;
- strumento: stringa di massimo 20 caratteri che
referenzia il campo nome nella tabella STRUMENTI;
Si noti che i campi musicista e strumento formano insieme la
chiave primaria della tabella ABILITA. Inoltre, un
musicista può suonare più di uno strumento,
ma non
necessariamente un musicista suona almeno uno strumento (nel caso, ad
esempio,
di cantanti).
Si forniscano le istruzioni SQL per creare
le tabelle STRUMENTI, MUSICISTI
e ABILITA,
avendo cura di relizzare in SQL i vincoli indicati.
Nota: Per scrivere le istruzioni SQL,
utilizzate un qualsiasi editor di testo (ad
esempio Notepad). Una volta scritto il codice
salvatelo su un file, ad esempio musicisti.sql, e
ponetelo nella cartella corrispondente alla posizione da cui avete
lanciato mysql (per
questa esercitazione, la cartella "basi_di_dati" creata sul desktop del
PC che state usando) e richiamate lo script cos&eirave creato da mysql
tramite il comando
mysql> source musicisti.sql
Se il file non si trova direttamente nella cartella indicata,
sostituite il nome del file con
il path relativo.
3. EFFETTUARE INTERROGAZIONI
Fornite le interrogazioni SQL per rispondere alle seguenti
domande:
- Restituire il nome degli strumenti suonati esclusivamente
da musicisti di sesso maschile;
- Per ogni musicista che suoni strumenti della categoria
‘Ottoni’ restituire il nome, il cognome, la data di nascita e gli
strumenti della categoria 'Ottoni' da lui suonati
- Per ogni musicista che suoni strumenti della categoria
‘Ottoni’ restituire il nome, il cognome, la data di nascita e
tutti gli strumenti da lui suonati (fornire una soluzione
senza utilizzare query annidate, ed una soluzione utilizzando query
annidate)
- Restituire nome, cognome e data di nascita dei musicisti
che suonano almeno 5 strumenti (fornire una soluzione che fa uso di
operatori di raggruppamento, ed una soluzione che fa uso di una vista);
- Restituire il nome degli strumenti suonati da esattamente
due musicisti (fornire una soluzione che fa uso di operatori di
raggruppamento, una che fa uso di una vista, ed una che usa una query
annidata);
- Restituire il nome ed il cognome del musicista più vecchio
(o dei musicisti più vecchi, se ci sono musicisti nati nello stesso
giorno) -- (fornire una soluzione che fa uso di query annidate, ed una
che non utilizza l'annidamento ma si avvale dell'uso di una vista);
- Restituire il nome ed il cognome del musicista più vecchio
(o dei musicisti più vecchi, se ci sono musicisti nati nello stesso
giorno) fra quelli che suonano almeno uno strumento, e gli
strumenti da lui (da loro) suonati -- (fornire una soluzione che fa uso
di query annidate, ed una che non utilizza l'annidamento ma si avvale
dell'uso di una vista);
- Restituire la categoria di strumenti più popolare, cioè la
categoria per la quale c'è il numero massimo di musicisti che suonano
strumenti di quella categoria (si noti che la categoria più popolare
non è necessariamente unica).
Per verificare la correttezza delle proprie soluzioni,
popolate la base di
dati con il file
musicisti-db.sql,
e confrontate i risultati ottenuti con quelli contenuti nel file
musicisti-3-ris.txt.
Per popolare la base di dati, copiate nella cartella "basi_di_dati"
posta sul desktop del vostro calcolatore il file musicisti-db.sql,
ed eseguite il comando
mysql> source musicisti-db.sql
Soluzioni.