La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Interrogazione di una base di dati relazionale SQL.

Presentazioni simili


Presentazione sul tema: "Interrogazione di una base di dati relazionale SQL."— Transcript della presentazione:

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 RelazioneTable AttributoColumn TuplaRow DominioData type

4 Costrutto SELECT select A 1, A 2,…A n from R 1, R 2,…R k  where C  dove:  R 1, R 2,…R k sono nomi (non necessariamente distinti) di relazioni  A 1, A 2,…A n sono attributi negli schemi di R 1, R 2,…R k  C è una condizione

5 Costrutto SELECT select A 1, A 2,…A n from R 1, R 2,…R k  where C  ; fornisce una multinsieme (un elemento può comparire più volte) che differisce dalla relazione (insieme)  A1,A2,…An  C  R 1 x R 2 x …x R k  solo per le ripetizioni di elementi

6 ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma  Nome (Cliente) select Nome from Cliente; Nome Rossi Bianchi Verdi Nome Rossi Bianchi Verdi

7 Clausola SELECT (opzione DISTINCT) select Nome from Cliente; Nome Rossi Bianchi Verdi select distinct Nome from Cliente; Nome Rossi Bianchi Verdi

8 Clausola SELECT (opzione ALIAS) select Nome as Cognome,CodC as Codice, Comune as Residenza from Cliente; ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma CognomeCodiceResidenza RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma

9 Clausola SELECT (opzione * ) select * from Cliente; NomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma

10 Clausola FROM (opzione ALIAS) select C.Nome from Cliente C; Nome Rossi Bianchi Verdi ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma

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 ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma NeriC5Napoli Dati dei clienti che risiedono a Milano o a Napoli select * from Cliente where Comune=‘Milano’ or Comune=‘Napoli’; NomeCodCComune RossiC2Milano NeriC5Napoli

13 Relazioni di confronto ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma NeriC5Napoli Dati dei clienti che si chiamano Rossi e risiedono a Milano o a Napoli select * from Cliente where Nome=‘Rossi’ and (Comune=‘Milano’ or Comune=‘Napoli’); NomeCodCComune RossiC2Milano

14 Relazioni di confronto ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma NeriC5Napoli 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’; NomeCodCComune RossiC2Milano NeriC5Napoli

15 Relazioni di confronto Dati dei clienti che hanno ordinato più di 100 pezzi di un articolo select Nome, C.CodC, Comune from Cliente C,Ordine O where N-pezzi>100 and C.CodC=O.CodC; ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A3100 NomeCodCComune RossiC2Milano BianchiC3Roma VerdiC4Roma

16 Relazioni di confronto Nomi dei clienti che hanno ordinato almeno un articolo con prezzo superiore a 3 select Nome from Cliente C,Ordine O,Articolo A where C.CodC=O.CodC and O.CodA=A.CodA and Prezzo>3; ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A3100 ArticoloCodATipoPrezzo A1Piatto3 A2Bicchie re 2 A3Tazza4 NomeCodCComune RossiC1Roma VerdiC4Roma

17 Relazioni di appartenenza insiemistica ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma NeriC5Napoli Dati dei clienti che risiedono a Milano o a Napoli select * from Cliente where Comune in(‘Milano’,‘Napoli’); NomeCodCComune RossiC2Milano NeriC5Napoli 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); ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A3100 NomeCod C Comune RossiC2Milano BianchiC3Roma VerdiC4Roma select Nome, C.CodC, Comune from Cliente C,Ordine O where N-pezzi>100 and C.CodC=O.CodC;

19 Relazioni di appartenenza insiemistica Nomi dei clienti che hanno ordinato almeno un articolo con prezzo superiore a 3 select Nome from Cliente where CodC in (select CodC from Ordine where CodA in (select CodA from Articolo where Prezzo>3)); ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A3100 ArticoloCodATipoPrezzo A1Piatto3 A2Bicchiere2 A3Tazza4 NomeCod C Comune RossiC1Roma VerdiC4Roma

20 Relazioni di appartenenza insiemistica Dati degli ordini di tazze effettuati da Rossi select * from Ordine where CodC in (select CodC from Cliente where Nome=‘Rossi) and CodA in (select CodA from Articolo where Tipo=‘Tazza’); ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma OrdineCodCCodAN-pezzi C1A1100 C2A2200 C3A2150 C4A3200 C1A3100 ArticoloCodATipoPrezzo A1Piatto3 A2Bicchiere2 A3Tazza4 Cod C Cod A N-pezzi C1A3100

21 Relazioni di somiglianza ortografica ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma BelliC6Napoli Dati dei clienti i cui nomi iniziano per ‘B’ select * from Cliente where Nome like ‘B*’; NomeCodCComune BianchiC3Roma BelliC6Napoli

22 Funzioni di insieme ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma RicciC7Milano Numero di clienti i cui nomi iniziano per ‘R’ select count(Nome) from Cliente where Nome like ‘R*’; count(Nome) 3

23 Funzioni di insieme ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma RicciC7Milano Numero di nomi di clienti che iniziano per ‘R’ select count(distinct Nome) from Cliente where Nome like ‘R*’; count(distinct Nome) 2

24 Funzioni di insieme Prezzo minimo, massimo e medio degli articoli select min(Prezzo), max(Prezzo), avg(Prezzo) from Articolo; ArticoloCodATipoPrezzo A1Piatto3 A2Bicchiere2 A3Tazza4 A4Caraffa4 min(Prezzo)max(Prezzo)avg(Prezzo) 243,25

25 Funzioni di insieme Dati degli articoli con prezzo massimo select * from Articolo where Prezzo in (select max(Prezzo) from Articolo); ArticoloCodATipoPrezzo A1Piatto3 A2Bicchiere2 A3Tazza4 A3Caraffa4 CodATipoPrezzo A3Tazza4 A3Caraffa4 select * from Articolo where Prezzo = (select max(Prezzo) from Articolo);

26 Funzioni di insieme Per ogni cliente e per ogni articolo Il numero complessivo di pezzi dell’articolo ordinati dal cliente select CodC,CodA,sum(N-pezzi) from Ordine group by CodC,CodA; OrdineCodCCodAN-pezzidata C1A DEC-06 C2A DEC-06 C3A DEC-06 C4A JAN-07 C1A JAN-07 C1A JAN-07 C2A JAN-07 C3A JAN-07 C4A JAN-07 CodCCodAsum(N-pezzi) C1A1250 C2A2200 C3A2250 C4A3300 C1A3100 C2A1100

27 Funzioni di insieme Per ogni cliente con codice maggiore di C2, numero di ordini per più di 100 pezzi che ha effettuato select CodC, count(*) from Ordine where N-pezzi>100 group by CodC having CodC>’C2’; OrdineCodCCodAN-pezzidata C1A DEC-06 C2A DEC-06 C3A DEC-06 C4A JAN-07 C1A JAN-07 C1A JAN-07 C2A JAN-07 C4A JAN-07 C4A JAN-07 CodCcount(*) C31 C42

28 Ordinamento Clienti in ordine alfabetico per nome ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma NeriC5Napoli NomeCodCComune BianchiC3Roma NeriC5Napoli RossiC1Roma RossiC2Milano VerdiC4Roma select * from Cliente order by Nome

29 Ordinamento Clienti in ordine alfabetico per nome e quelli con lo stesso nome ordinati per Comune ClienteNomeCodCComune RossiC1Roma RossiC2Milano BianchiC3Roma VerdiC4Roma NeriC5Napoli NomeCodCComune BianchiC3Roma NeriC5Napoli RossiC2Milano RossiC1Roma VerdiC4Roma select * from Cliente order by Nome,Comune

30 Ordinamento 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; ArticoloCodATipoPrezzo A1Piatto3 A5Piatto2 A6Bicchiere1 A4Piatto2 A2Bicchiere2 A3Tazza4 A3Caraffa4 CodATipoPrezzo A2Bicchiere2 A6Bicchiere1 A3Caraffa4 A1Piatto3 A5Piatto2 A4Piatto2 A3Tazza4

31 Costrutto SELECT select from  where   group by   having   order by 

32 Quali impiegati guadagnano più del loro superiore select Imp.Cognome, Imp.Stip, Capo.Cognome, Capo.Stip, from Impiegato Imp, Impiegato Capo where Imp.Sup=Capo.I and Imp.Stip>Capo.Stip ImpiegatoCognomeIStipSup RossiI131I3 BianchiI228I3 VerdiI330I5 NeriI435I5 BruniI533- Imp.CognomeImp.StipCapo.CognomeCapo.Stip Rossi31Verdi30 Neri35Bruni33 Clausola FROM (opzione ALIAS)


Scaricare ppt "Interrogazione di una base di dati relazionale SQL."

Presentazioni simili


Annunci Google