Corso di Laurea in Ingegneria dell'Informazione - SAPIENZA Università di Roma

Corso di Basi di Dati ed Ingegneria del Software - A.A. 2016/17

Esercitazione Autoguidata su SQL

OBIETTIVI DELL'ESERCITAZIONE:

INSTALLAZIONE CLIENT E CONNESSIONE

  1. Per prima cosa scaricare il file basi_di_dati.zip e scompattatelo sul desktop.
  2. Aprirel'interprete dei comandi di Windows (Start->esegui inserire "cmd" e premere ok). Aperta la "shell" spostarsi nella cartella sul desktop con il comando cd (risulta comodo aprire la cartella basi_di_dati e copiare il percorso presente nella parte superiore della finestra).
  3. Digitare il comando mysql -h ws02 -u <username>
    Nota: nel comando precedente, sostituire a <username> il nome utente assegnatovi per l'esercitazione, ad esempio, lo studente con username stud1 dovrà digitare

    mysql -h ws02 -u stud1 

    L'utente che vi verrà assegnato non necessita di una password. In caso contrario il comando avrebbe richiesto l'opzione finale -p ed il successivo inserimento della password.

Se non si sono verificati errori la connessione  stabilita. Ora  possibile interagire con il DBMS e procedere con i successivi punti dell'esercitazione

1. CREARE UNA BASE DI DATI

L'utente studi ha i diritti per creare le basi di dati dbj_studi con 1<=j<=5. Su queste basi di dati l'utente studi ha tutti i diritti possibili (creazione tabelle, popolamento, modifica, interrogazione).

Una volta effettuata la connessione, come descritto al punto precedente, per creare la base di dati db1_studi, operate dal prompt dei comandi come descritto in seguito (ricordate di sostituire ad i il numero che vi  stato assegnato per l'esercitazione):

  1. eseguite il comando: create database db1_studi;
  2. selezionate il database creato attraverso il comando: use db1_studi;

Ora  possibile interagire con il DBMS per operare sulla base di dati creata e procedere con i successivi punti dell'esercitazione. 

2. CREARE E CANCELLARE TABELLE

Si consideri la tabella PERSONE, contenente i seguenti attributi

e la tabella GENITORI, contenente i seguenti attributi Si forniscano le istruzioni SQL per creare le due tabelle.

Per scrivere le istruzioni SQL, potete procedere direttamente da riga di comando (digitando Invio per sottomettere comandi SQL al DBMS),  oppure utilizzare un qualsiasi editor di testo. Se scegliete la seconda opzione, una volta scritto il codice salvatelo su un file, ad esempio persone.sql, e richiamate lo script cos“ creato da MySQL tramite il comando 

source persone.sql

Se il file non si trova direttamente nella posizione da cui avete lanciato mysql, sostituite il nome del file con il path relativo. Si noti che ogni volta che viene usato il comando source, vengono eseguite tutte le istruzioni contenute nel file.

Per verificare di aver effettivamente creato le tabelle, eseguite la seguente interrogazione

select table_name, table_schema from information_schema.tables;
che interroga (sugli attributi table_name e table_schema) la tabella predefinita tables  del catalogo (information_schema) che memorizza informazioni su tutte le tabelle della base di dati. Inoltre, dato il nome di una tabella  possibile ottenere i suoi attributi (nome e tipo) con il comando
describe <nome-tabella>;

3. POPOLARE LA BASE DATI

Per popolare la base di dati, copiate il file eserSQL-db.sql nell'unità C, ed eseguite il comando

source eserSQL-db.sql

4. EFFETTUARE INTERROGAZIONI (SELECT-PROJECT-JOIN)

Fornite le interrogazioni SQL per rispondere alle seguenti domande. 

  1. Trovare i figli di 'Franco';
  2. Trovare nome e reddito delle persone con meno di 30 anni;
  3. Trovare nome e reddito dei maschi con meno di 30 anni;
  4. Trovare i genitori di persone che guadagnano pi di 20;
  5. Trovare la relazione che mostra per ogni persona i nonni;
  6. Trovare le madri di persone che guadagnano pi di 20;
  7. Trovare la relazione che mostra per ciascun figlio i rispettivi genitori (Padre, Madre, Figlio);

Per scrivere ed eseguire le istruzioni SQL relative alle interrogazioni procedete come al punto precedente.

Confrontate i risultati ottenuti con quelli contenuti nel file eserSQL-4-ris.txt.

5. EFFETTUARE INTERROGAZIONI CON OPERATORI AGGREGATI E GROUP BY

Fornite le interrogazioni SQL per rispondere alle seguenti domande. 

  1. Trovare le persone che sono genitori di almeno 2 figli;
  2. Trovare l'età media dei geniori di Olga;
  3. Trovare il reddito complessivo dei figli di Anna e Luigi;
  4. Trovare per ogni persona il numero dei suoi figli;
  5. Trovare il reddito delle persone che sono genitori di almeno 2 figli.
    Fornire una soluzione senza usare raggruppamento, ed una usando raggruppamento.
    Come si generalizzano le due soluzioni al caso in cui si voglia trovare il reddito di persone con almeno 3, 4, 5, ... figli?

Per verificare la correttezza delle proprie soluzioni, confrontate i risultati ottenuti con quelli contenuti nel file eserSQL-5-ris.txt.

6. ULTERIORI INTERROGAZIONI (SELECT-PROJECT-JOIN)

Fornite le interrogazioni SQL per rispondere alle seguenti domande.

  1. Trovare nome e reddito dei genitori di 'Ezechiele';
  2. Trovare i Nonni di Ezechiele;
  3. Trovare i figli (in comune) di Franco e Maria;
  4. Trovare i Nonni di Aldo e di Andrea;
  5. Trovare la relazione che mostra le coppie di fratelli (due persone sono fratelli se hanno un genitore in comune)
  6. Trovare i fratelli di Maria;
  7. Trovare la relazione che mostra le coppie fratello-sorella.

Confrontate i risultati ottenuti con quelli contenuti nel file eserSQL-6-ris.txt


Soluzioni