Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori...

21
Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti D B M G Operatori insiemistici Operatore UNION Operatore INTERSECT Operatore INTERSECT Operatore EXCEPT D B M G

Transcript of Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori...

Page 1: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 1

Linguaggio SQL: fondamenti

DBMG

Operatori insiemistici

Operatore UNIONOperatore INTERSECTOperatore INTERSECTOperatore EXCEPT

DBMG

Page 2: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 2

Operatori insiemistici

DBMG

Operatore UNION

Operatore insiemistico di unione

Esegue l’unione delle due espressioni relazionali A e B

le espressioni relazionali A e B possono essere generate da istruzioni SELECT

A UNION B

DBMG

grichiede la compatibilità di schema tra A e Brimozione dei duplicati

UNION rimuove i duplicatiUNION ALL non rimuove i duplicati

Informatica
Evidenziato
Informatica
Evidenziato
Page 3: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 3

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)forniti dal fornitore F2 (o entrambe le cose)

DBMG

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

CodP NomeP Colore Taglia MagazzinoP1 Maglia Rosso 40 TorinoP2 Jeans Verde 48 MilanoP3 Camicia Blu 48 RomaP4 Camicia Blu 44 Torino

PFPCodF CodP Qta

F1 P1 300F1 P2 200F1 P3 400F1 P4 200F1 P5 100

forniti dal fornitore F2 (o entrambe le cose)

DBMG

P4 Camicia Blu 44 TorinoP5 Gonna Blu 40 MilanoP6 Bermuda Rosso 42 Torino

F1 P5 100F1 P6 100F2 P1 300F2 P2 400F3 P2 200F4 P3 200F4 P4 300F4 P5 400

Page 4: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 4

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'

DBMG

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'

P

forniti dal fornitore F2 (o entrambe le cose)

DBMG

CodP NomeP Colore Taglia MagazzinoP1 Maglia Rosso 40 TorinoP2 Jeans Verde 48 MilanoP3 Camicia Blu 48 RomaP4 Camicia Blu 44 TorinoP5 Gonna Blu 40 MilanoP6 Bermuda Rosso 42 Torino

CodPP1P6

Page 5: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 5

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM FPWHERE CodF='F2'

forniti dal fornitore F2 (o entrambe le cose)

DBMG

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

UNION: esempio

forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM FPWHERE CodF='F2'

FPCodF CodP Qta

F1 P1 300F1 P2 200F1 P3 400F1 P4 200F1 P5 100

DBMG

F1 P5 100F1 P6 100F2 P1 300F2 P2 400F3 P2 200F4 P3 200F4 P4 300F4 P5 400

CodPP1P2

Page 6: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 6

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'UNION

DBMG

SELECT CodP FROM FPWHERE CodF='F2';

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'UNION

RCodP

P1P2

CodPP1

P6

forniti dal fornitore F2 (o entrambe le cose)

DBMG

SELECT CodP FROM FPWHERE CodF='F2';

P6CodPP1

P2

Page 7: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 7

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'UNION

RCodP

P1P2

forniti dal fornitore F2 (o entrambe le cose)

DBMG

SELECT CodP FROM FPWHERE CodF='F2';

P2P6Rimozione

del duplicato

UNION: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'UNION

Compatibilitàdi schema

forniti dal fornitore F2 (o entrambe le cose)

DBMG

SELECT CodP FROM FPWHERE CodF='F2';

Page 8: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 8

UNION ALL: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'UNION ALL

DBMG

SELECT CodP FROM FPWHERE CodF='F2';

UNION ALL: esempio

Trovare il codice dei prodotti di colore rosso o forniti dal fornitore F2 (o entrambe le cose)

SELECT CodP FROM PWHERE Colore='Rosso'UNION ALL

RCodP

P1P1P2

CodPP1

P6

forniti dal fornitore F2 (o entrambe le cose)

DBMG

SELECT CodP FROM FPWHERE CodF='F2';

P2P6CodP

P1

P2

Page 9: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 9

Operatori insiemistici

DBMG

Operatore insiemistico di intersezione

Operatore INTERSECT

Esegue l’intersezione delle due espressioni relazionali A e B

le espressioni relazionali A e B possono essere generate da istruzioni SELECT

A INTERSECT B

DBMG

grichiede la compatibilità di schema tra A e B

Page 10: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 10

INTERSECT: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

CodP NomeP Colore Taglia MagazzinoP1 Maglia Rosso 40 TorinoP2 Jeans Verde 48 MilanoP3 Camicia Blu 48 RomaP4 Camicia Blu 44 TorinoP5 Gonna Blu 40 MilanoP6 Bermuda Rosso 42 Torino

P

magazzino di prodotti

DBMG

P6 Bermuda Rosso 42 Torino

CodF NomeF NSoci SedeF1 Andrea 2 TorinoF2 Luca 1 MilanoF3 Antonio 3 MilanoF4 Gabriele 2 TorinoF5 Matteo 3 Venezia

F

INTERSECT: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

SELECT Sede FROM F

SedeCodF NomeF NSoci SedeF

magazzino di prodotti

DBMG

TorinoMilanoMilanoTorino

Venezia

F1 Andrea 2 TorinoF2 Luca 1 MilanoF3 Antonio 3 MilanoF4 Gabriele 2 TorinoF5 Matteo 3 Venezia

Page 11: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 11

INTERSECT: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

SELECT Magazzino FROM P

CodP NomeP Colore Taglia MagazzinoP

Magazzino

magazzino di prodotti

DBMG

g gP1 Maglia Rosso 40 TorinoP2 Jeans Verde 48 MilanoP3 Camicia Blu 48 RomaP4 Camicia Blu 44 TorinoP5 Gonna Blu 40 MilanoP6 Bermuda Rosso 42 Torino

gTorinoMilanoRomaTorinoMilanoTorino

INTERSECT: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

SELECT Sede FROM FINTERSECTSELECT M g ino

magazzino di prodotti

DBMG

SELECT Magazzino FROM P;

Page 12: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 12

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

INTERSECT: esempio

magazzino di prodotti

SELECT Sede FROM FINTERSECTSELECT Maga ino Torino

R

SedeTorinoMilanoMilanoTorino

Venezia

DBMG

SELECT Magazzino FROM P;

TorinoMilanoMagazzino

TorinoMilanoRomaTorinoMilanoTorino

Equivalenza con altri operatori

L’operazione di intersezione può essere eseguita anche medianteanche mediante

il joinl’operatore IN

DBMG

Page 13: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 13

Equivalenza con il join

La clausola FROM contiene le relazioni interessate dall’intersezionedall intersezioneLa clausola WHERE contiene condizioni di join tra gli attributi presenti nella clausola SELECT delle espressioni relazionali A e B

DBMG

Equivalenza con il join: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodottimagazzino di prodotti

DBMG

Page 14: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 14

Equivalenza con il join: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

SELECT Sede FROM F, P...

magazzino di prodotti

DBMG

Equivalenza con il join: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

SELECT Sede FROM F, PWHERE F.Sede=P.Magazzino;

magazzino di prodotti

DBMG

Page 15: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 15

Equivalenza con l’operatore IN

Una delle due espressioni relazionali diviene un’interrogazione nidificata mediante l’operatoreun interrogazione nidificata mediante l operatore INGli attributi nella clausola SELECT esterna, uniti da un costruttore di tupla, costituiscono la parte sinistra dell’operatore IN

DBMG

Equivalenza con IN: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodottimagazzino di prodotti

DBMG

Page 16: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 16

Equivalenza con IN: esempio

Trovare le città che sono sia sede di fornitori, sia magazzino di prodotti

SELECT Magazzino FROM PWHERE Magazzino IN (SELECT Sede

FROM F);

magazzino di prodotti

DBMG

Operatori insiemistici

DBMG

Page 17: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 17

Operatore EXCEPT

Operatore insiemistico di differenza

A EXCEPT B

Sottrae l’espressione relazionale B all’espressione relazionale A

richiede la compatibilità di schema tra A e B

DBMG

EXCEPT: esempio

Trovare le città che sono sede di fornitori, ma non magazzino di prodotti

CodP NomeP Colore Taglia MagazzinoP1 Maglia Rosso 40 TorinoP2 Jeans Verde 48 MilanoP3 Camicia Blu 48 RomaP4 Camicia Blu 44 TorinoP5 Gonna Blu 40 MilanoP6 B d R 42 T i

P

magazzino di prodotti

DBMG

P6 Bermuda Rosso 42 Torino

CodF NomeF NSoci SedeF1 Andrea 2 TorinoF2 Luca 1 MilanoF3 Antonio 3 MilanoF4 Gabriele 2 TorinoF5 Matteo 3 Venezia

F

Page 18: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 18

EXCEPT: esempio

Trovare le città che sono sede di fornitori, ma non magazzino di prodotti

SELECT Sede FROM F

SedeCodF NomeF NSoci SedeF

magazzino di prodotti

DBMG

TorinoMilanoMilanoTorino

Venezia

F1 Andrea 2 TorinoF2 Luca 1 MilanoF3 Antonio 3 MilanoF4 Gabriele 2 TorinoF5 Matteo 3 Venezia

EXCEPT: esempio

Trovare le città che sono sede di fornitori, ma non magazzino di prodotti

SELECT Magazzino FROM P

CodP NomeP Colore Taglia MagazzinoP

Magazzino

magazzino di prodotti

DBMG

g gP1 Maglia Rosso 40 TorinoP2 Jeans Verde 48 MilanoP3 Camicia Blu 48 RomaP4 Camicia Blu 44 TorinoP5 Gonna Blu 40 MilanoP6 Bermuda Rosso 42 Torino

gTorinoMilanoRomaTorinoMilanoTorino

Page 19: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 19

EXCEPT: esempio

Trovare le città che sono sede di fornitori, ma non magazzino di prodotti

SELECT Sede FROM FEXCEPT

magazzino di prodotti

DBMG

SELECT Magazzino FROM P;

EXCEPT: esempio

Trovare le città che sono sede di fornitori, ma non magazzino di prodotti

SELECT Sede FROM FEXCEPT R

SedeTorinoMilanoMilanoTorino

Venezia

magazzino di prodotti

DBMG

SELECT Magazzino FROM P;

VeneziaMagazzinoTorinoMilanoRomaTorinoMilanoTorino

Page 20: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 20

Equivalenza con l’operatore NOT IN

L’operazione di differenza può essere eseguita anche mediante l’operatore NOT INanche mediante l operatore NOT IN

l’espressione relazionale B è nidificata all’interno dell’operatore NOT INgli attributi nella clausola SELECT dell’espressione relazionale A, uniti da un costruttore di tupla, costituiscono la parte sinistra dell’operatore NOT IN

DBMG

IN

Equivalenza con l’operatore NOT IN: esempio

Trovare le città che sono sede di fornitori, ma non magazzino di prodottimagazzino di prodotti

DBMG

Page 21: Basi di dati Linguaggio SQL: Operatori insiemistici · Basi di dati Linguaggio SQL: Operatori insiemistici Elena Baralis ©2007 Politecnico di Torino 20 Equivalenza con l’operatore

Basi di dati Linguaggio SQL: Operatori insiemistici

Elena Baralis©2007 Politecnico di Torino 21

Equivalenza con l’operatore NOT IN: esempio

Trovare le città che sono sede di fornitori, ma non magazzino di prodotti

SELECT Sede FROM FWHERE Sede NOT IN (SELECT Magazzino

FROM P);

magazzino di prodotti

DBMG