basi di dati linguaggio sql: operatori insiemistici · basi di dati linguaggio sql: operatori...
TRANSCRIPT
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
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
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
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
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
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
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';
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
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
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
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;
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
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
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
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
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
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
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
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
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
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