CONFRONTO FRA I PREDICATI
PREDICATI CHE ANALIZZERE SONO : IN, NOT IN, ANY, ALL, EXISTS
go!
INTRODUZIONE
IN e NOT in possono essere utilizzati (sotto opportune condizioni) per costruire le operazioni insiemistiche di intersezioni e di differenza di tabelle. La condizione principale è che entrambe le tabelle abbiano una chiave.
Creazione di due tabelle (Impiegati e NuoviDipendenti entrambi con lo stesso schema)
- Id
- Nome
- Cognome
- Residenza
- Dipartimento
NuoviDipendenti (Id,Nome,Cognome,Residenza,Dipartimento)
2.Dipendenti presenti in entrambe le tabelleImpiegati INTERSECT NuoviDipendenti
- Per ragioni organizzative alcuni dipendenti della tabella NuoviDipendenti sono stati inseriti nella tabella Impiegati e altri no.Desideriamo quindi sapere chi sono i nuovi assunti presenti nella tabella Impiegati
3.Per mostrare solo i dipendenti di una delle due tabelle bisogna utilizzare EXCEPT
Index
IN/ NOT IN
ANY
ALL
EXISTS
IN/NOT IN
- RITORNANDO AL SECONDO PUNTO (Dipendenti presenti in entrambe le tabelle Impiegati INTERSECT NuoviDipendenti) Questa intersezione può essere rappresentata attraverso un'interrogazione.
- Utilizziamo il predicato IN perché controlla se il valore appartiene ad una serie di valori che vengono inseriti dopo l'in(subquery)
SELECT *
FROM Impiegati
WHERE ID IN ( SELECT ID
FROM Nuovi Dipendenti );
- PER QUANTO RIGUARDA IL TERZO PUNTO(Per mostrare solo i dipendenti di una delle due tabelle bisogna utilizzare EXCEPT).Questo può essere rappresentanto attraverso un'interrogazione.
SELECT *
FROM NuoviDipendenti
WHERE ID NOT IN ( SELECT ID
FROM Impiegati );
ANY
- La condizione di confronto di ricerca è vera se il confronto è vero per almeno uno dei valori dell'elenco .
- Il predicato ANY è falso se la subquery restituisce un insieme vuoto oppure se il confronto è falso per ciascun valore della subquery stessa.
- Il predicato ANY corrisponde a il predicato IN
ESEMPIO PRODUTTORE(IDProd,RagioneSociale,Indirizzo,Nazione,Ntel,Email) SOFTWARE(IDSoft,Nome,Versione,Lingua,Supporto,Prezzo,IDProd(fk),IDCat(fk)) CATEGORIA(IDCat,Denominazione Visualizzare la ragione sociale e l'indirizzo dei produttori di nazionalità inglese con codice produttore uguale a quelllo di almeno un produttore che realizza dei software con un prezzo superiore a 30 euro SELECT PRODUTTORE.RagioneSociale,PRODUTTORE.Indirizzo FROM PRODUTTORE WHERE PRODUTTORE.Nazione='Inghilterra' AND PRODUTTORE.IDProd = ANY ( SELECT SOFTWARE.IDProd FROM SOFTWARE WHERE SOFTWARE.Prezzo>30);
ALL
- La condizione di ricerca è vera se il confronto è vero per ciascun dei valori dell'elenco.
- La condizione di ricerca è falsa se il confronto è falso per almeno uno dei valori della subquery.
- Il predicato ALL corrisponde a NOT IN
Visualizzare il codice del software la ragione sociale e l'indirizzo dei produttori di nazionalità inglese con codice produttore uguale a quello di tutti i produttori che realizza dei software con un prezzo superiore a 30 euro
SELECT PRODUTTORE.RagioneSociale,PRODUTTORE.Indirizzo FROM PRODUTTORE WHERE PRODUTTORE.Nazione='Inghilterra' AND PRODUTTORE.IDProd = ALL ( SELECT SOFTWARE.IDProd FROM SOFTWARE WHERE SOFTWARE.Prezzo>30);
Il risultato che appare è l'opposto del risultato precedente
EXISTS
- Il predicato EXISTS controlla se vengono restituite righe dalla subquery.
- La condizione di ricerca è vera solo se esiste almeno una riga come risultato
- La condizione di ricerca è falsa se la subquery restituisce un insieme vuoto.
- Il predicato EXISTS è l'unico che non mette in relazione un valore con quello della subquery, per questo motivo si utilizza la forma SELECT* nella subquery stessa
Visualizzare la ragione sociale e l'indirizzo dei produttori,solo se esistono produttori di nazionalità inglese
SELECT PRODUTTORE.RagioneSociale,PRODUTTORE.Indirizzo FROM PRODUTTORE WHERE EXISTS ( SELECT* FROM PRODUTTORE WHERE PRODUTTORE.Nazione='Inghilterra' );
Presentazione Essenziale
giuseppe.caldarone
Created on January 23, 2024
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Smart Presentation
View
Practical Presentation
View
Essential Presentation
View
Akihabara Presentation
View
Pastel Color Presentation
View
Visual Presentation
View
Relaxing Presentation
Explore all templates
Transcript
CONFRONTO FRA I PREDICATI
PREDICATI CHE ANALIZZERE SONO : IN, NOT IN, ANY, ALL, EXISTS
go!
INTRODUZIONE
IN e NOT in possono essere utilizzati (sotto opportune condizioni) per costruire le operazioni insiemistiche di intersezioni e di differenza di tabelle. La condizione principale è che entrambe le tabelle abbiano una chiave.
Creazione di due tabelle (Impiegati e NuoviDipendenti entrambi con lo stesso schema)
NuoviDipendenti (Id,Nome,Cognome,Residenza,Dipartimento)
2.Dipendenti presenti in entrambe le tabelleImpiegati INTERSECT NuoviDipendenti
3.Per mostrare solo i dipendenti di una delle due tabelle bisogna utilizzare EXCEPT
Index
IN/ NOT IN
ANY
ALL
EXISTS
IN/NOT IN
SELECT * FROM Impiegati WHERE ID IN ( SELECT ID FROM Nuovi Dipendenti );
SELECT * FROM NuoviDipendenti WHERE ID NOT IN ( SELECT ID FROM Impiegati );
ANY
ESEMPIO PRODUTTORE(IDProd,RagioneSociale,Indirizzo,Nazione,Ntel,Email) SOFTWARE(IDSoft,Nome,Versione,Lingua,Supporto,Prezzo,IDProd(fk),IDCat(fk)) CATEGORIA(IDCat,Denominazione Visualizzare la ragione sociale e l'indirizzo dei produttori di nazionalità inglese con codice produttore uguale a quelllo di almeno un produttore che realizza dei software con un prezzo superiore a 30 euro SELECT PRODUTTORE.RagioneSociale,PRODUTTORE.Indirizzo FROM PRODUTTORE WHERE PRODUTTORE.Nazione='Inghilterra' AND PRODUTTORE.IDProd = ANY ( SELECT SOFTWARE.IDProd FROM SOFTWARE WHERE SOFTWARE.Prezzo>30);
ALL
Visualizzare il codice del software la ragione sociale e l'indirizzo dei produttori di nazionalità inglese con codice produttore uguale a quello di tutti i produttori che realizza dei software con un prezzo superiore a 30 euro
SELECT PRODUTTORE.RagioneSociale,PRODUTTORE.Indirizzo FROM PRODUTTORE WHERE PRODUTTORE.Nazione='Inghilterra' AND PRODUTTORE.IDProd = ALL ( SELECT SOFTWARE.IDProd FROM SOFTWARE WHERE SOFTWARE.Prezzo>30);
Il risultato che appare è l'opposto del risultato precedente
EXISTS
Visualizzare la ragione sociale e l'indirizzo dei produttori,solo se esistono produttori di nazionalità inglese
SELECT PRODUTTORE.RagioneSociale,PRODUTTORE.Indirizzo FROM PRODUTTORE WHERE EXISTS ( SELECT* FROM PRODUTTORE WHERE PRODUTTORE.Nazione='Inghilterra' );