Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
4 – Accesso ai dati di un DB SQL
3 Interrogazioni di tipo insiemistico union (unione), intersect (intersezione) ed except (differenza) Assumono come default di eseguire una eliminazione di duplicati L’eliminazione dei duplicati rispetta meglio il tipico significato delle operatori insiemistici Per preservare i duplicati: usare l’operatore con la parola chiave all
4 Interrogazioni di tipo insiemistico La sintassi per l’uso degli operatori insiemistici: SelectSQL { [all] SelectSQL }
5 Interrogazioni di tipo insiemistico SQL non richiede che gli schemi su cui vengono effettuate le operazioni insiemistiche siano identiche Solo che gli attributi siano in pari numero e che abbiano domini compatibili La corrispondenza tra gli attributi non si basa sul nome ma sulla posizione degli attributi Se gli attributi hanno nome diverso, il risultato normalmente usa i nomi del primo operando
6 Interrogazione 22 (insiemistiche) Nomi e cognomi degli impiegati (notare: non serve che gli attributi abbiano lo stesso nome, ma solo lo stesso “tipo”, per esempio stringa) select Nome from Impiegato union select Cognome from Impiegato
7 Interrogazione 22 (insiemistiche) select Nome from Impiegato union select Cognome from Impiegato Nome Mario Carlo Giuseppe Franco Lorenzo Paola Marco Rossi Bianchi Verdi Neri Lanzi Borroni
8 Interrogazione 23 (insiemistiche) Nomi e cognomi degli impiegati mantenendo i duplicati select Nome from Impiegato where Dipart<>’Amministr’ union all select Cognome from Impiegato where Dipart<>’Amministr’ Nome Carlo Franco Carlo Lorenzo Marco Bianchi Neri Rossi Lanzi Franco
9 Interrogazione 24 (insiemistiche) Cognomi che sono anche nomi select Nome from Impiegato intersect select Cognome from Impiegato Nome Franco
10 Interrogazione 25 (insiemistiche) Nomi che non sono cognomi select Nome from Impiegato except select Cognome from Impiegato Nome Mario Carlo Giuseppe Lorenzo Paola Marco
11 SQL->linguaggio SQL gestisce i duplicati ( select e select distinct ), algebra no (basata su insiemi) select * from Impiegati ordered by [asc|desc] Matricola Operatori aggregati Interrogazioni nidificate per ordinare le tuple