Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Interrogazione di una base di dati relazionale
SQL
2
SQL (Structured Query Language)
Linguagio standard per la definizione, l’interrogazione e la manipolazione di basi di dati relazionali
3
Terminologia Relazione Table Attributo Column Tupla Row
Dominio Data type
4
Costrutto SELECT select A1, A2,…An from R1, R2,…Rk where C dove:
R1, R2,…Rk sono nomi (non necessariamente distinti) di relazioni A1, A2,…An sono attributi negli schemi di R1, R2,…Rk C è una condizione
5
Costrutto SELECT select A1, A2,…An from R1, R2,…Rk where C ;
fornisce una multinsieme (un elemento può comparire più volte) che differisce dalla relazione (insieme) A1,A2,…AnCR1 x R2 x …x Rk solo per le ripetizioni di elementi
6
select Nome Nome(Cliente) from Cliente; Cliente Nome CodC Comune
Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 select Nome from Cliente; Nome(Cliente) Nome Rossi Bianchi Verdi Nome Rossi Bianchi Verdi
7
Clausola SELECT (opzione DISTINCT)
Nome Rossi Bianchi Verdi Nome Rossi Bianchi Verdi select Nome from Cliente; select distinct Nome from Cliente;
8
Clausola SELECT (opzione ALIAS)
Cognome Codice Residenza Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 select Nome as Cognome,CodC as Codice, Comune as Residenza from Cliente;
9
Clausola SELECT (opzione *)
Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 select * from Cliente;
10
Clausola FROM (opzione ALIAS)
Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Nome Rossi Bianchi Verdi select C.Nome from Cliente C;
11
Clausola WHERE La condizione nella clausola where è un’espressione
booleana (operatori: and, or, not). Vi possono comparire relazioni di: confronto appartenenza insiemistica somiglianza ortografica
12
Relazioni di confronto
select * from Cliente where Comune=‘Milano’ or Comune=‘Napoli’; Dati dei clienti che risiedono a Milano o a Napoli Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Neri C5 Napoli Nome CodC Comune Rossi C2 Milano Neri C5 Napoli
13
Relazioni di confronto
select * from Cliente where Nome=‘Rossi’ and (Comune=‘Milano’ or Comune=‘Napoli’); Dati dei clienti che si chiamano Rossi e risiedono a Milano o a Napoli Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Neri C5 Napoli Nome CodC Comune Rossi C2 Milano
14
Relazioni di confronto
Dati dei clienti che si chiamano Rossi e risiedono a Milano oppure che risiedono a Napoli select * from Cliente where Nome=‘Rossi’ and Comune=‘Milano’ or Comune=‘Napoli’; Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Neri C5 Napoli Nome CodC Comune Rossi C2 Milano Neri C5 Napoli
15
Relazioni di confronto
select Nome, C.CodC, Comune from Cliente C,Ordine O where N-pezzi>100 and C.CodC=O.CodC; Dati dei clienti che hanno ordinato più di 100 pezzi di un articolo Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Nome CodC Comune Rossi C2 Milano Bianchi C3 Roma Verdi C4 Ordine CodC CodA N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3
16
Relazioni di confronto
select C.* from Cliente C,Ordine O,Articolo A where C.CodC=O.CodC and O.CodA=A.CodA and Prezzo>3; Dati dei clienti che hanno ordinato almeno un articolo con prezzo superiore a 3 Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Nome CodC Comune Rossi C1 Roma Verdi C4 Ordine CodC CodA N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Articolo CodA Tipo Prezzo A1 Piatto 3 A2 Bicchiere 2 A3 Tazza 4
17
Relazioni di appartenenza insiemistica
select * from Cliente where Comune in(‘Milano’,‘Napoli’); Dati dei clienti che risiedono a Milano o a Napoli Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Neri C5 Napoli Nome CodC Comune Rossi C2 Milano Neri C5 Napoli select * from Cliente where Comune=‘Milano’ or Comune=‘Napoli’;
18
Relazioni di appartenenza insiemistica
Dati dei clienti che hanno ordinato più di 100 pezzi di un articolo select * from Cliente where CodC in (select CodC from Ordine where N-pezzi>100); Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Nome CodC Comune Rossi C2 Milano Bianchi C3 Roma Verdi C4 Ordine CodC CodA N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 select Nome, C.CodC, Comune from Cliente C,Ordine O where N-pezzi>100 and C.CodC=O.CodC;
19
Relazioni di appartenenza insiemistica
select Nome from Cliente where CodC in (select CodC from Ordine where CodA in (select CodA from Articolo where Prezzo>3)); Nomi dei clienti che hanno ordinato almeno un articolo con prezzo superiore a 3 Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Nome CodC Comune Rossi C1 Roma Verdi C4 Ordine CodC CodA N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Articolo CodA Tipo Prezzo A1 Piatto 3 A2 Bicchiere 2 A3 Tazza 4
20
Relazioni di appartenenza insiemistica
select * from Ordine where CodC in (select CodC from Cliente where Nome=‘Rossi) and CodA in (select CodA from Articolo where Tipo=‘Tazza’); Dati degli ordini di tazze effettuati da Rossi Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 CodC CodA N-pezzi C1 A3 100 Ordine CodC CodA N-pezzi C1 A1 100 C2 A2 200 C3 150 C4 A3 Articolo CodA Tipo Prezzo A1 Piatto 3 A2 Bicchiere 2 A3 Tazza 4
21
Relazioni di somiglianza ortografica
Dati dei clienti i cui nomi iniziano per ‘B’ select * from Cliente where Nome like ‘B*’; Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Belli C6 Napoli Nome CodC Comune Bianchi C3 Roma Belli C6 Napoli
22
Funzioni di insieme select count(Nome) from Cliente
Numero di clienti i cui nomi iniziano per ‘R’ select count(Nome) from Cliente where Nome like ‘R*’; Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Ricci C7 count(Nome) 3
23
Funzioni di insieme select count(distinct Nome) from Cliente
where Nome like ‘R*’; Numero di nomi di clienti che iniziano per ‘R’ Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Ricci C7 count(distinct Nome) 2
24
Funzioni di insieme select min(Prezzo), max(Prezzo), avg(Prezzo)
from Articolo; Prezzo minimo, massimo e medio degli articoli Articolo CodA Tipo Prezzo A1 Piatto 3 A2 Bicchiere 2 A3 Tazza 4 A4 Caraffa min(Prezzo) max(Prezzo) avg(Prezzo) 2 4 3,25
25
Funzioni di insieme select * from Articolo
where Prezzo in (select max(Prezzo) from Articolo); Dati degli articoli con prezzo massimo Articolo CodA Tipo Prezzo A1 Piatto 3 A2 Bicchiere 2 A3 Tazza 4 Caraffa CodA Tipo Prezzo A3 Tazza 4 Caraffa select * from Articolo where Prezzo = (select max(Prezzo) from Articolo);
26
Funzioni di insieme select CodC,CodA,sum(N-pezzi) from Ordine
group by CodC,CodA; Per ogni cliente e per ogni articolo Il numero complessivo di pezzi dell’articolo ordinati dal cliente Ordine CodC CodA N-pezzi data C1 A1 100 01-DEC-06 C2 A2 200 C3 150 12-DEC-06 C4 A3 17-JAN-07 15-JAN-07 12-JAN-07 20-JAN-07 04-JAN-07 11-JAN-07 CodC CodA sum(N-pezzi) C1 A1 250 C2 A2 200 C3 C4 A3 300 100
27
Funzioni di insieme select CodC, count(*) from Ordine
Per ogni cliente con codice maggiore di C2, che ha effettuato almeno 2 ordini per più di 100 pezzi, numero di tali ordini che ha effettuato select CodC, count(*) from Ordine where N-pezzi>100 and CodC>’C2’ group by CodC having count(*)>1; Ordine CodC CodA N-pezzi data C1 A1 100 01-DEC-06 C2 A2 200 C3 150 12-DEC-06 C4 A3 17-JAN-07 15-JAN-07 12-JAN-07 20-JAN-07 04-JAN-07 11-JAN-07 CodC count(*) C4 2
28
Ordinamento select * from Cliente order by Nome
Clienti in ordine alfabetico per nome Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Neri C5 Napoli Nome CodC Comune Bianchi C3 Roma Neri C5 Napoli Rossi C1 C2 Milano Verdi C4
29
Ordinamento select * from Cliente order by Nome,Comune
Clienti in ordine alfabetico per nome e quelli con lo stesso nome ordinati per Comune Cliente Nome CodC Comune Rossi C1 Roma C2 Milano Bianchi C3 Verdi C4 Neri C5 Napoli Nome CodC Comune Bianchi C3 Roma Neri C5 Napoli Rossi C2 Milano C1 Verdi C4
30
Ordinamento select * from Articolo order by Tipo,Prezzo desc;
Articoli in ordine alfabetico per Tipo e quelli con lo stesso Tipo ordinati in ordine decrescente per prezzo select * from Articolo order by Tipo,Prezzo desc; Articolo CodA Tipo Prezzo A1 Piatto 3 A5 2 A6 Bicchiere 1 A4 A2 A3 Tazza 4 Caraffa CodA Tipo Prezzo A2 Bicchiere 2 A6 1 A3 Caraffa 4 A1 Piatto 3 A5 A4 Tazza
31
Costrutto SELECT select <lista di attributi e funzioni>
from <lista di tabelle> where <condizione> group by <lista attributi di raggruppamento> having <condizione di raggruppamento> order by <lista attributi>
32
Clausola FROM (opzione ALIAS)
select Imp.Cognome, Imp.Stip, Capo.Cognome, Capo.Stip, from Impiegato Imp, Impiegato Capo where Imp.Sup=Capo.I and Imp.Stip>Capo.Stip Quali impiegati guadagnano più del loro superiore Impiegato Cognome I Stip Sup Rossi I1 31 I3 Bianchi I2 28 Verdi 30 I5 Neri I4 35 Bruni 33 - Imp.Cognome Imp.Stip Capo.Cognome Capo.Stip Rossi 31 Verdi 30 Neri 35 Bruni 33
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.