Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 11
Elaborazione dati Elaborazione dati informaticiinformatici
Università degli Studi di CataniaUniversità degli Studi di Catania
Facoltà medicinaFacoltà medicina
Corsi di laurea in: Corsi di laurea in: Tecnici di Radiologia Medica per Tecnici di Radiologia Medica per
Immagini RadioterapiaImmagini Radioterapia
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 22
Linguaggio SQLLinguaggio SQL
Prof Ing Gaetano La RosaProf Ing Gaetano La Rosa
email: email: [email protected]@glrstudio.com
Web: www.glrstudio.comWeb: www.glrstudio.com
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 33
SQL: caratteriSQL: caratteri
SQL utilizza SQL utilizza – i caratteri alfabetici;i caratteri alfabetici;– Cifre decimali;Cifre decimali;– Operatori aritmetici (+ - * /);Operatori aritmetici (+ - * /);– Operatori di confronto (< >);Operatori di confronto (< >);– Caratteri di sintassi (, ;);Caratteri di sintassi (, ;);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 44
SQL: identificatoriSQL: identificatori
Gli identificatori sono i nomi di tabelle Gli identificatori sono i nomi di tabelle o di attributi o di attributi
Sono costituiti da sequenze di caratteri Sono costituiti da sequenze di caratteri di lunghezza non superiore a 18 di lunghezza non superiore a 18
Devono iniziare con una lettera e Devono iniziare con una lettera e possono contenere il carattere ‘_’possono contenere il carattere ‘_’
Per separare il nome tabella dal nome Per separare il nome tabella dal nome attributo si utilizza il carattere ‘.’attributo si utilizza il carattere ‘.’– Nometabella.nomeattributoNometabella.nomeattributo
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 55
SQL: tipi di datiSQL: tipi di dati
Nella dichiarazione della struttura di una Nella dichiarazione della struttura di una tabella occorre specificare il tipo di dati tabella occorre specificare il tipo di dati per ogni attributoper ogni attributo
Alcuni tipi standard:Alcuni tipi standard:– character(n) character(n) stringa n char stringa n char– Character Character stringa 1 char stringa 1 char– Date Date data nel formato aaaa/mm/gg data nel formato aaaa/mm/gg– Time Time ora nel formato hh:mm ora nel formato hh:mm– Integer(p) Integer(p) intero con precisione p intero con precisione p– Smallint Smallint intero con precisione 5 intero con precisione 5– Integer Integer intero con precisione 10 intero con precisione 10
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 66
SQL: tipi di dati (2)SQL: tipi di dati (2)
– Decimal(p,s) Decimal(p,s) decimale con precisione p e cifre decimali s decimale con precisione p e cifre decimali s– Real Real numero reale con precisione 7numero reale con precisione 7– Float(p) Float(p) numero reale con mantissa di precisione p numero reale con mantissa di precisione p– Float Float numero reale con mantissa di precisione 15 numero reale con mantissa di precisione 15
AbbreviazioniAbbreviazioni– Char(n) anziché character(n)Char(n) anziché character(n)– Char anziché characterChar anziché character– Int(p) anziché integer(p)Int(p) anziché integer(p)– Dec(p,s) anziché decimal(p,s)Dec(p,s) anziché decimal(p,s)
NB alcune versioni SQL prevedono definizioni tipi lievemente NB alcune versioni SQL prevedono definizioni tipi lievemente diversediverse
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 77
Costanti e operatoriCostanti e operatori
Le costanti stringa sono delimitate da apici: Le costanti stringa sono delimitate da apici: ‘stringa’‘stringa’
Gli attributi che non hanno un valore definito Gli attributi che non hanno un valore definito assumono il valore NULL (diverso sia da 0 assumono il valore NULL (diverso sia da 0 che da stringa vuota)che da stringa vuota)
Sono previsti gli operatori NOT, AND, ORSono previsti gli operatori NOT, AND, OR Clausola ‘not null’: va inserita accanto ai Clausola ‘not null’: va inserita accanto ai
nomi degli attributi che non possono nomi degli attributi che non possono prevedere valori null (ad esempio le chiavi) prevedere valori null (ad esempio le chiavi)
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 88
Comandi DDL: Data Comandi DDL: Data Definition LanguageDefinition Language Permettono di implementare il modello Permettono di implementare il modello
logico dei dati sulle memorie di massa.logico dei dati sulle memorie di massa.
Nelle più recenti versioni di DBMS Nelle più recenti versioni di DBMS dette operazioni sono effettuate con dette operazioni sono effettuate con interfacce interattive senza l’uso di interfacce interattive senza l’uso di comandi specifici. comandi specifici.
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 99
Comando Comando CREATE CREATE TABLETABLE Utilizzato per la creazione di tabelle Utilizzato per la creazione di tabelle Va seguito dal nome della tabella e Va seguito dal nome della tabella e
dall’elenco degli attributi:dall’elenco degli attributi:
– CREATE TABLECREATE TABLE personale personale(Matricola(Matricola char(5),char(5),CognomeCognome char(30),char(30),NomeNome char(30),char(30),CodFisCodFis char(16) not null,char(16) not null,AssuntoAssunto date,date,FilialeFiliale smallint,smallint,Funzione Funzione char(15),char(15),LivelloLivello smallint,smallint,StipBaseStipBase integer,integer,ViaVia char(25),char(25),CapCap char(5),char(5),CittaCitta char(20),char(20),ProvProv char(2)char(2)););
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1010
Modifica di una tabella Modifica di una tabella creatacreata ALTER TABLE: permette di ALTER TABLE: permette di
modificare una tabella con modificare una tabella con aggiunta (ADD) o rimozione aggiunta (ADD) o rimozione (DROP) di attributi:(DROP) di attributi:– ALTERALTER TABLETABLE personale personale
ADDADD Nascita date;Nascita date;
– ALTER TABLEALTER TABLE personale personale DROPDROP StipBase; StipBase;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1111
Creazione di indici su Creazione di indici su tabelletabelle CREATE INDEX: permette la CREATE INDEX: permette la
creazione di un nuovo indice su creazione di un nuovo indice su una tabella esistente su specifici una tabella esistente su specifici attributi:attributi:
– CREATE INDEXCREATE INDEX Ipersonale IpersonaleONON personale (cognome, Nome); personale (cognome, Nome);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1212
Cancellazione di Cancellazione di tabelle e indici: DROPtabelle e indici: DROP DROP TABLEDROP TABLE personale; personale;
DROP INDEXDROP INDEX Ipersonale Ipersonale ONON personale; personale;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1313
Comandi DML: Data Comandi DML: Data Manipulation Manipulation LanguageLanguage Permettono di modificare i valori degli Permettono di modificare i valori degli
attributi mediante inserimento, attributi mediante inserimento, modifica e cancellazione.modifica e cancellazione.– INSERT, UPDATE, DELETEINSERT, UPDATE, DELETE
Anche questi comandi in alcune Anche questi comandi in alcune versioni di DBMS possono risultare versioni di DBMS possono risultare nascosti all’utente grazie all’utilizzo di nascosti all’utente grazie all’utilizzo di maschere e interfacce visualimaschere e interfacce visuali
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1414
Comandi DML: INSERTComandi DML: INSERT
INSERT INTOINSERT INTO personale personale (Matricola, Cognome, Nome, CodFis, Nascita, (Matricola, Cognome, Nome, CodFis, Nascita,
assunto, Filiale, Funzione, Livello, assunto, Filiale, Funzione, Livello, StipBase, Via, Cap, Citta, Prov)StipBase, Via, Cap, Citta, Prov)
VALUESVALUES (‘CS342’,’Pillera’, ‘Luigi’, ‘PLLLGU…’, (‘CS342’,’Pillera’, ‘Luigi’, ‘PLLLGU…’,
………………,’CT’);,’CT’);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1515
Comandi DML: UPDATEComandi DML: UPDATE
UPDATE UPDATE personalepersonaleSETSET Livello=6, Livello=6,
SETSET Stipbase=1260, Stipbase=1260,
WHEREWHERE matricola=‘CS212’; matricola=‘CS212’;
UPDATEUPDATE personale personaleSETSET Stipbase=Stipbase*1.05, Stipbase=Stipbase*1.05,
WHERE WHERE livello >5;livello >5;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1616
Comandi DML: DELETEComandi DML: DELETE
DELETE FROMDELETE FROM personale personale
WHEREWHERE Matricola=‘CS102’; Matricola=‘CS102’;
DELETE FROMDELETE FROM personale personale
WHEREWHERE Stipbase < 500; Stipbase < 500;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1717
Comandi di Comandi di interrogazione: SELECT interrogazione: SELECT
SELECTSELECT [ALL| DISTINCT] [ALL| DISTINCT] AttributiAttributi
FROMFROM TabelleTabelle
[[WHEREWHERE CondizioneCondizione];];
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1818
QUERY su TABELLA QUERY su TABELLA studentistudenti
NOME MATRICOL INDIRIZZO TELEFONO Mario Rossi 123456 Via Etnea 1 222222 Ugo Bianchi 234567 Via Roma 2 333333 Teo Verdi 345678 Via Enna 3 444444
Vorrei conoscere indirizzo e telefono di Teo Verdi
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 1919
QUERY su TABELLA studenti QUERY su TABELLA studenti (2)(2)
SELECTSELECT Indirizzo, TelefonoIndirizzo, Telefono
FROMFROM Studenti Studenti
WHEREWHERE Nome=‘Teo Verdi’ Nome=‘Teo Verdi’
NOME MATRICOL INDIRIZZO TELEFONO Mario Rossi 123456 Via Etnea 1 222222 Ugo Bianchi 234567 Via Roma 2 333333 Teo Verdi 345678 Via Enna 3 444444
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2020
Altri esempi:Altri esempi:
Utilizzando il database personale Utilizzando il database personale
1 Visualizzare Cognome, nome e 1 Visualizzare Cognome, nome e codice fiscale del personale avente codice fiscale del personale avente qualifica impiegatoqualifica impiegato
2 Visualizzare tutti i dati del 2 Visualizzare tutti i dati del personale avente residenza in personale avente residenza in Milano Milano
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2121
Risposte Risposte
1)1)
SELECTSELECT Cognome, Nome, CodFis Cognome, Nome, CodFis
FROMFROM personale personale
WHEREWHERE Funzione=‘impiegato’; Funzione=‘impiegato’;
2)2)
SELECTSELECT * *
FROM FROM personalepersonale
WHEREWHERE Prov=‘MI’; Prov=‘MI’;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2222
Clausola distinctClausola distinct
SELECTSELECT Funzione Funzione
FROMFROM personale; personale;
produce l’elenco di tutte le professioni dei dipendenti ripetendo la produce l’elenco di tutte le professioni dei dipendenti ripetendo la stessa professione in righe diverse quanti sono i dipendenti che stessa professione in righe diverse quanti sono i dipendenti che svolgono quella funzionesvolgono quella funzione
SELECT DISTINCTSELECT DISTINCT Funzione Funzione
FROMFROM personale; personale;produce l’elenco di tutte le professioni dei dipendenti specificando produce l’elenco di tutte le professioni dei dipendenti specificando una sola volta le singole funzioni presenti una sola volta le singole funzioni presenti
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2323
Clausola ASClausola AS
La clausola AS serve per assegnare l’intestazione della tabella La clausola AS serve per assegnare l’intestazione della tabella che si ottiene a seguito di un comando SELECTche si ottiene a seguito di un comando SELECT
Esempi: Esempi: Utilizzando il database personale visualizzare Utilizzando il database personale visualizzare
1 L’ elenco di tutte le province di provenienza dei 1 L’ elenco di tutte le province di provenienza dei dipendenti con intestazione Provinciadipendenti con intestazione Provincia
2 l’ elenco di tutti i dipendenti con cognome, nome, 2 l’ elenco di tutti i dipendenti con cognome, nome, stipendio attuale con intestazione attuale e valore stipendio attuale con intestazione attuale e valore previsionale in caso di aumento del 5% con previsionale in caso di aumento del 5% con intestazione Nuovo. (Il database non deve subire intestazione Nuovo. (Il database non deve subire modifiche)modifiche)
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2424
RisposteRisposte
1 1 SELECT DISTINCTSELECT DISTINCT Prov Prov AS AS Provincia Provincia FROMFROM personale; personale;
2 SELECT2 SELECT Cognome, Nome, Cognome, Nome,
Stipbase Stipbase ASAS Attuale, Attuale,
StipBase*1.05 StipBase*1.05 ASAS Nuovo Nuovo
FROMFROM personale; personale;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2525
Query parametriche Query parametriche (MSAccess)(MSAccess)SELECTSELECT Cognome, Nome Cognome, Nome
FROMFROM personale personale WHERE WHERE Funzione =‘impiegato’;Funzione =‘impiegato’;
Query fissa su attributo Funzione= Query fissa su attributo Funzione= ‘impiegato’‘impiegato’
SELECT SELECT Cognome, NomeCognome, NomeFROMFROM personale personale WHEREWHERE Funzione =[quale funzione?]; Funzione =[quale funzione?];
Query parametrica su attributo FunzioneQuery parametrica su attributo FunzioneIl sistema chiederà quale funzione?Il sistema chiederà quale funzione?
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2626
Capacità del comando Capacità del comando SQL SELECTSQL SELECTCapacità del comando Capacità del comando SQL SELECTSQL SELECT
SelezioneSelezione ProiezioneProiezione
Tabella 1Tabella 1 Tabella 2Tabella 2
Tabella 1Tabella 1 Tabella 1Tabella 1
JoinJoin
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2727
Selezione Selezione
Selezione Selezione consente di ricavare da una consente di ricavare da una relazione un’altra relazione contenente solo relazione un’altra relazione contenente solo le righe che soddisfano una certa condizione le righe che soddisfano una certa condizione
Si realizza con la clausola WHERESi realizza con la clausola WHERE
SELECTSELECT * *FROMFROM personale personale
WHEREWHERE Funzione = ‘dirigente’; Funzione = ‘dirigente’;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2828
Proiezione Proiezione
Proiezione Proiezione consente di ricavare da una consente di ricavare da una relazione un’altra relazione contenente solo relazione un’altra relazione contenente solo alcune colonne della relazione di partenza alcune colonne della relazione di partenza
Si realizza indicando accanto a SELECT gli Si realizza indicando accanto a SELECT gli
attributi richiesti attributi richiesti
SELECTSELECT Cognome, Nome Cognome, NomeFROMFROM personale; personale;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 2929
Congiunzione - Join Congiunzione - Join Congiunzione Congiunzione consente la congiunzione di consente la congiunzione di
più tabelle attraverso degli attributi comuni più tabelle attraverso degli attributi comuni
CREATE TABLECREATE TABLE personale personale((Matricola Matricola char(5) not null,char(5) not null,CognomeCognomechar(30),char(30),NomeNomechar(30),char(30),CodFisCodFis char(16) char(16) not null,not null,AssuntoAssunto date,date,FilialeFilialesmallint,smallint,Funzione Funzione char(15),char(15),LivelloLivellosmallint,smallint,StipBaseStipBaseinteger,integer,ViaViachar(25),char(25),CapCapchar(5),char(5),CittaCittachar(20),char(20),ProvProvchar(2)char(2)););
CREATE TABLECREATE TABLE dipendenza dipendenza((CodFil CodFil smallint not nullsmallint not nullDescrizioneDescrizione char(20)char(20)IndirizzoIndirizzochar(25)char(25)););Fra dipendenza e personale Fra dipendenza e personale
esiste un’associazione 1esiste un’associazione 1n n pertanto la chiave di pertanto la chiave di dipendenza (CodFil) viene dipendenza (CodFil) viene posta come chiave esterna in posta come chiave esterna in personale (Filiale)personale (Filiale)
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3030
Congiunzione – Join (2) Congiunzione – Join (2)
Utilizzando la join e le tabelle personale e dipendenza creare la query per visualizzare Utilizzando la join e le tabelle personale e dipendenza creare la query per visualizzare l’elenco di tutti i dipendenti (completo di tutti i dati) con l’indicazione e la descrizione della l’elenco di tutti i dipendenti (completo di tutti i dati) con l’indicazione e la descrizione della filiale nella quale lavorano filiale nella quale lavorano
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3131
RispostaRispostaSELECTSELECT * * FROMFROM personale, dipendenza personale, dipendenza WHEREWHERE Filiale=CodFil; Filiale=CodFil;
SELECTSELECT * *FROMFROM personale, dipendenza personale, dipendenzaWHEREWHERE personale.Filiale = personale.Filiale = dipendenza.CodFil;dipendenza.CodFil;
oppureoppure
SELECTSELECT * * FROMFROM personale personale INNER JOININNER JOIN dipendenzadipendenza ON ON personale.Filiale = personale.Filiale = dipendenza.CodFil;dipendenza.CodFil;
oppureoppure
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3232
Congiunzione – Left/Right JoinCongiunzione – Left/Right Join La forma La forma
SELECTSELECT * * FROMFROM personale personale INNER JOININNER JOIN dipendenza dipendenza ON ON personale.Filiale = dipendenza.CodFil; personale.Filiale = dipendenza.CodFil;
Permette di selezionare le righe delle due tabelle con Permette di selezionare le righe delle due tabelle con l’attributo comune l’attributo comune INNER JOIN o EQUI JOIN. INNER JOIN o EQUI JOIN.
Se si desidera visualizzare altre informazioni di record per i Se si desidera visualizzare altre informazioni di record per i quali non sussiste la corrispondenza fra le due tabelle è quali non sussiste la corrispondenza fra le due tabelle è possibile utilizzare left o right prima di join a seconda se i possibile utilizzare left o right prima di join a seconda se i dati da visualizzare stanno posti sulla matrice di destra o dati da visualizzare stanno posti sulla matrice di destra o sinistra rispetto al join sinistra rispetto al join
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3333
Congiunzione – Left JoinCongiunzione – Left Join
SELECTSELECT * * FROMFROM personale personale LEFT JOINLEFT JOIN dipendenza dipendenza ON ON personale.Filiale = dipendenza.CodFil; personale.Filiale = dipendenza.CodFil;
Permette di selezionare le righe delle due tabelle con Permette di selezionare le righe delle due tabelle con l’attributo comune e gli eventuali campi della tabella l’attributo comune e gli eventuali campi della tabella personale (tabella di sinistra) non aventi corrispondenze personale (tabella di sinistra) non aventi corrispondenze nella tabella di destra. nella tabella di destra.
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3434
Congiunzione –Right Join Congiunzione –Right Join
SELECTSELECT * * FROMFROM personale personale RIGHT JOINRIGHT JOIN dipendenza dipendenza ON ON personale.Filiale = dipendenza.CodFil; personale.Filiale = dipendenza.CodFil;
Permette di selezionare le righe delle due tabelle con Permette di selezionare le righe delle due tabelle con l’attributo comune e gli eventuali campi della tabella l’attributo comune e gli eventuali campi della tabella dipendenza (tabella di destra) non aventi corrispondenze dipendenza (tabella di destra) non aventi corrispondenze nella tabella di sinistra. nella tabella di sinistra.
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3535
Congiunzione – Self-Congiunzione – Self-Join Join
La congiunzione è detta di self-Join quando opera su una medesima tabellaLa congiunzione è detta di self-Join quando opera su una medesima tabella
ES: aggiungiamo alla tabella personale l’attributo Dirigente che contiene il codice della ES: aggiungiamo alla tabella personale l’attributo Dirigente che contiene il codice della persona che dirige il dipendente. Le informazioni sul Dirigente, in quanto anch’esso persona che dirige il dipendente. Le informazioni sul Dirigente, in quanto anch’esso dipendente, saranno contenute sulle medesima tabella personale. dipendente, saranno contenute sulle medesima tabella personale.
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3636
Congiunzione – Self-Join Congiunzione – Self-Join (2) (2)
CREATE TABLECREATE TABLE personale personale(Matricola(Matricola char(5),char(5),CognomeCognomechar(30),char(30),……AssuntoAssunto date,date,DirigenteDirigentechar(5),char(5),FilialeFilialesmallint,smallint,……ProvProvchar(2)char(2)););Esempio: Utilizzando il self join e la tabella personale Esempio: Utilizzando il self join e la tabella personale con il campo dirigente, visualizzare l’elenco dei con il campo dirigente, visualizzare l’elenco dei dipendenti con i dati cognome e nome del dipendente e dipendenti con i dati cognome e nome del dipendente e indicazione del cognome del relativo dirigente indicazione del cognome del relativo dirigente
Per effettuare una self-join Per effettuare una self-join si utilizzano gli alias sui si utilizzano gli alias sui nomi delle tabelle nomi delle tabelle utilizzando la clausola AS. utilizzando la clausola AS.
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3737
Risposta Risposta
SELECTSELECT Tab1.Cognome, Tab1.Nome, Tab2.Cognome Tab1.Cognome, Tab1.Nome, Tab2.Cognome FROMFROM personale AS Tab1, personale AS Tab2 personale AS Tab1, personale AS Tab2
WHEREWHERE Tab1.Dirigente = Tab2.Matricola Tab1.Dirigente = Tab2.Matricola ; ;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3838
Operatori logiciOperatori logici
AND, OR, NOTAND, OR, NOT
Esercizio: Esercizio: Realizzare una Query per ottenere elenco dei Realizzare una Query per ottenere elenco dei dipendenti con funzione impiegato con cognome, dipendenti con funzione impiegato con cognome, nome, descrizione e indirizzo della filiale dove nome, descrizione e indirizzo della filiale dove lavorano:lavorano:
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 3939
RispostaRisposta
SELECTSELECT Cognome, Nome, Descrizione, indirizzo Cognome, Nome, Descrizione, indirizzoFROMFROM personale, dipendenza personale, dipendenzaWHEREWHERE Funzione=‘impiegato’ Funzione=‘impiegato’ ANDAND Filiale=CodFil; Filiale=CodFil;
……. O per maggiore chiarezza: . O per maggiore chiarezza:
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4040
RispostaRisposta
SELECTSELECT personale.Cognome, personale.Nome, personale.Cognome, personale.Nome, dipendenza.Descrizione, dipendenza.indirizzodipendenza.Descrizione, dipendenza.indirizzo
FROMFROM personale, dipendenza personale, dipendenza
WHEREWHERE personale.Funzione=‘impiegato’ personale.Funzione=‘impiegato’ ANDAND personale.Filiale=dipendenza.CodFil;personale.Filiale=dipendenza.CodFil;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4141
Funzioni di Funzioni di aggregazioneaggregazione COUNT: conteggioCOUNT: conteggio SUM: sommaSUM: somma AVG: mediaAVG: media MIN: minimoMIN: minimo MAX: massimoMAX: massimo
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4242
Funzione COUNTFunzione COUNT
Conta le righe presenti in una tabellaConta le righe presenti in una tabella Sintassi: COUNT(arg)Sintassi: COUNT(arg)
Arg= * Arg= * tutte le righe tutte le righe
Arg= attributo Arg= attributo tutte le righe con att ! tutte le righe con att !=NULL=NULL
COUNT permette di determinare la COUNT permette di determinare la cardinalità di una relazione cardinalità di una relazione
Può utilizzarsi con clausola WHEREPuò utilizzarsi con clausola WHERE
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4343
Funzione COUNT (2)Funzione COUNT (2)
Esercizio Esercizio
Utilizzando la funzione count visualizzare:Utilizzando la funzione count visualizzare:
11 Il numero di dipendenti presenti nel database Il numero di dipendenti presenti nel database personale;personale;
2 il numero di dipendenti aventi uno specifico 2 il numero di dipendenti aventi uno specifico livello assegnato (ovvero con campo !=Null)livello assegnato (ovvero con campo !=Null)
3 il numero di dipendenti residenti nella 3 il numero di dipendenti residenti nella provincia di Catania provincia di Catania
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4444
RispostaRisposta
1 1 SELECT COUNTSELECT COUNT (*) (*)
FROMFROM personale; personale;
2 SELECT COUNT2 SELECT COUNT(livello)(livello)
FROMFROM personale; personale;
3 SELECT COUNT3 SELECT COUNT(*)(*)
FROMFROM personale personale
WHEREWHERE Prov=‘CT’; Prov=‘CT’;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4545
Funzione COUNT (3)Funzione COUNT (3)
EsercizioEsercizio Utilizzando la clausola Utilizzando la clausola
DISTINCT visualizzare il DISTINCT visualizzare il numero di numero di differenti livelli che differenti livelli che risiedono nella provincia di CT. risiedono nella provincia di CT. Intestare l’uscita con livelli. Intestare l’uscita con livelli.
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4646
RispostaRisposta
SELECT COUNTSELECT COUNT ( (DISTINCTDISTINCT livello) livello) ASAS livelli livelli
FROMFROM personale personale
WHEREWHERE Prov=‘CT; Prov=‘CT;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4747
Funzione SUMFunzione SUM
Restituisce la somma dei valori di Restituisce la somma dei valori di una colonna di tipo numerico una colonna di tipo numerico
Eventuali campi NULL vanno Eventuali campi NULL vanno considerati come 0considerati come 0
Può utilizzarsi con clausola Può utilizzarsi con clausola WHERE e DISTINCTWHERE e DISTINCT
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4848
Funzione SUM (2)Funzione SUM (2)
Esercizio Esercizio
Utilizzando l’archivio personale Utilizzando l’archivio personale visualizzare visualizzare
1.1. la Somma degli stipendi base (stipbase) la Somma degli stipendi base (stipbase) appartenenti al livello 5appartenenti al livello 5
2.2. La somma degli stipendi base del livello La somma degli stipendi base del livello 5 qualora si effettui un aumento del 10%, 5 qualora si effettui un aumento del 10%, intestando la colonna come Previsione intestando la colonna come Previsione
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 4949
RispostaRisposta
1 SELECT SUM1 SELECT SUM (StipBase) (StipBase)FROMFROM personale personale
WHEREWHERE Livello=5; Livello=5;
2 SELECT SUM2 SELECT SUM (StipBase*1,1) AS (StipBase*1,1) AS PrevisionePrevisione
FROMFROM personale personale
WHEREWHERE Livello = 5; Livello = 5;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5050
Funzione AVG Funzione AVG (average)(average) Restituisce la media aritmetica dei Restituisce la media aritmetica dei
valori di una colonna di tipo numerico valori di una colonna di tipo numerico Eventuali campi NULL non influiscono Eventuali campi NULL non influiscono
nel computo della media nel computo della media Può utilizzarsi con clausola WHERE e Può utilizzarsi con clausola WHERE e
DISTINCTDISTINCT
SELECT AVGSELECT AVG (StipBase) (StipBase)FROMFROM personale personale WHEREWHERE Funzione=‘Impiegato’; Funzione=‘Impiegato’;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5151
Funzioni MAX e MINFunzioni MAX e MIN
Restituiscono rispettivamente il max e il min tra i Restituiscono rispettivamente il max e il min tra i valori di una colonna valori di una colonna
Operano anche su attributi sia numerici che di tipo Operano anche su attributi sia numerici che di tipo caratterecarattere
Ignorano i campi NULLIgnorano i campi NULL
L’argomento di MIN e MAX può essere un’espressione L’argomento di MIN e MAX può essere un’espressione numericanumerica
Può utilizzarsi con clausola WHERE Può utilizzarsi con clausola WHERE
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5252
Funzioni MAX e MIN Funzioni MAX e MIN (2)(2)
SELECT MINSELECT MIN(StipBase), (StipBase), MAXMAX (StipBase) (StipBase)
FROM FROM personale; personale;
SELECT MIN SELECT MIN (Cognome),(Cognome), MAX MAX (Cognome)(Cognome)
FROM FROM personale;personale;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5353
Funzioni di ordinamento Funzioni di ordinamento e raggruppamentoe raggruppamento
ORDER BY: criterio di ORDER BY: criterio di ordinamentoordinamento
GROUP BY: criterio di GROUP BY: criterio di raggruppamentoraggruppamento
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5454
FUNZIONE ORDER BYFUNZIONE ORDER BY
Permette di ordinare il risultato di una Permette di ordinare il risultato di una query secondo i valori contenuti in una query secondo i valori contenuti in una o più colonne o più colonne
Opera sia su valori numerici che Opera sia su valori numerici che caratterecarattere
Può essere ascendente ASC (default) o Può essere ascendente ASC (default) o discendente DESCdiscendente DESC
Il valore NULL sarà posta all’inizio delle Il valore NULL sarà posta all’inizio delle sequenze crescenti, alla fine in quelle sequenze crescenti, alla fine in quelle decrescenti decrescenti
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5555
FUNZIONE ORDER BY FUNZIONE ORDER BY (2)(2)EsercizioEsercizio
Utilizzando la tabella personale visualizzare Utilizzando la tabella personale visualizzare 1.1. EElenco alfabetico dei dipendenti con cognome, lenco alfabetico dei dipendenti con cognome,
nome, data_nascita e CF ordinato per cognome nome, data_nascita e CF ordinato per cognome e, in caso di cognomi uguali, per nome e, in caso di cognomi uguali, per nome
2.2. Elenco dei dipendenti con cognome e stipendio Elenco dei dipendenti con cognome e stipendio per stipendio decrescente e, a parità di per stipendio decrescente e, a parità di stipendio, per cognome crescentestipendio, per cognome crescente
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5656
RispostaRisposta
SELECTSELECT Cognome, Nome, Cognome, Nome, CodFisc,NascitaCodFisc,Nascita
FROM FROM personale personale
ORDER BYORDER BY Cognome, Nome; Cognome, Nome;SELECTSELECT Cognome, StipBase Cognome, StipBase
FROMFROM personale personale ORDER BYORDER BY StipBase StipBase DESCDESC, ,
Cognome;Cognome;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5757
FUNZIONE GROUP BYFUNZIONE GROUP BY
Permette di raggruppare un insieme di righe Permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate aventi lo stesso valore nelle colonne indicate (statistiche)(statistiche)
Produce una riga per ogni raggruppamento Produce una riga per ogni raggruppamento Se utilizzata con funzioni di aggregazione Se utilizzata con funzioni di aggregazione
produce un valore di raggruppamento per produce un valore di raggruppamento per ciascuna riga ciascuna riga
I valori NULL vengono raggruppati solo se si I valori NULL vengono raggruppati solo se si utilizza COUNT(*)utilizza COUNT(*)
Tutti gli attributi posti nella lista del SELECT Tutti gli attributi posti nella lista del SELECT devono essere inclusi nella clausola GROUP BY devono essere inclusi nella clausola GROUP BY oppure essere argomenti di una funzione di oppure essere argomenti di una funzione di aggregazioneaggregazione
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5858
FUNZIONE GROUP BY FUNZIONE GROUP BY (2)(2)
Esercizio: utilizzando la tabella Esercizio: utilizzando la tabella personale visualizzare personale visualizzare la la lista lista delle funzioni dei dipendenti con la delle funzioni dei dipendenti con la somma degli stipendi e il numero somma degli stipendi e il numero dei dipendenti appartenenti alle dei dipendenti appartenenti alle diverse funzioni (tante righe diverse funzioni (tante righe quante sono le funzioni diverse)quante sono le funzioni diverse)
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 5959
Risposta Risposta
SELECTSELECT Funzione, Funzione, SUMSUM (StipBase), (StipBase), COUNTCOUNT (*)(*)
FROMFROM personale personale
GROUP BYGROUP BY Funzione; Funzione;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6060
FUNZIONE GROUP BY FUNZIONE GROUP BY (3)(3)
Esercizio: Esercizio:
Visualizzare l’Visualizzare l’elenco dei livelli elenco dei livelli esistenti tra i dipendenti con esistenti tra i dipendenti con funzione di impiegato con il funzione di impiegato con il numero di dipendenti per ciascun numero di dipendenti per ciascun livello intestato come conteggio livello intestato come conteggio (una riga per ogni livello) (una riga per ogni livello)
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6161
RispostaRisposta
SELECTSELECT Livello, Livello, COUNTCOUNT (Livello) (Livello) ASAS ConteggioConteggio
FROMFROM personale personale
WHEREWHERE Funzione=‘impiegato’ Funzione=‘impiegato’
GROUP BYGROUP BY Livello; Livello;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6262
Clausola HAVINGClausola HAVING
La clausola HAVING è, in genere, La clausola HAVING è, in genere, utilizzata con GROUP BY e serve ad utilizzata con GROUP BY e serve ad aggiungere dei controlli sui gruppi di aggiungere dei controlli sui gruppi di righe ottenuti righe ottenuti
Dopo che GROUP BY ha formato dei Dopo che GROUP BY ha formato dei raggruppamenti HAVING serve a raggruppamenti HAVING serve a visualizzare le righe di visualizzare le righe di raggruppamento che soddisfano raggruppamento che soddisfano determinate condizioni determinate condizioni
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6363
Clausola HAVING (2)Clausola HAVING (2)
Esercizio: Visualizzare Esercizio: Visualizzare l’elenco delle funzioni dei dipendenti con lo l’elenco delle funzioni dei dipendenti con lo
stipendio medio per ciascuna funzione nella stipendio medio per ciascuna funzione nella quale ci siano almeno 2 dipendenti (non quale ci siano almeno 2 dipendenti (non vengono visualizzate funzioni con un solo vengono visualizzate funzioni con un solo dipendente)dipendente)
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6464
RispostaRisposta
SELECTSELECT Funzione , Funzione , AVGAVG (StipBase) (StipBase)
FROMFROM personale personale
GROUP BYGROUP BY Funzione Funzione
HAVING COUNTHAVING COUNT(*) >1; (*) >1;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6565
Clausola HAVING (3)Clausola HAVING (3)
Esercizio: utilizzando la tabella Esercizio: utilizzando la tabella personale visualizzare personale visualizzare
l’l’elenco delle filiali con l’indicazione del elenco delle filiali con l’indicazione del numero dei dipendenti con qualifica numero dei dipendenti con qualifica impiegato, intestato come conteggio. impiegato, intestato come conteggio. Omettere le filiali ove questo numero è Omettere le filiali ove questo numero è <= 10<= 10
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6666
RispostaRisposta
SELECTSELECT Filiale, Filiale, COUNTCOUNT (Filiale) (Filiale) ASAS Conteggio Conteggio
FROMFROM personale personale
WHEREWHERE Funzione=‘impiegato’ Funzione=‘impiegato’
GROUP BYGROUP BY Filiale Filiale
HAVING COUNTHAVING COUNT(*) >10; (*) >10;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6767
Clausola HAVING (4)Clausola HAVING (4)
HAVING opera un filtraggio come HAVING opera un filtraggio come WHERE ma:WHERE ma:– WHERE WHERE agisce sulle righe della agisce sulle righe della
tabella tabella – HAVINGHAVING sui risultati delle funzioni di sui risultati delle funzioni di
aggregazione applicati ai gruppi di aggregazione applicati ai gruppi di righe righe
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6868
Riepilogo di SelectRiepilogo di Select
SelectSelect [ [all/distinctall/distinct] * | lista_campi] * | lista_campiFromFrom tabella|tabelle tabella|tabelle
[[wherewhere condizione] condizione]
[[Group byGroup by campo[,campo..]] campo[,campo..]]
[[havinghaving condizione] condizione]
[[order byorder by campo [asc|desc]] campo [asc|desc]]
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 6969
Esecuzione di Select Esecuzione di Select (2)(2) L’esecuzione del comando select L’esecuzione del comando select
avviene secondo il seguente avviene secondo il seguente ordine di clausole: ordine di clausole:
1)1) clausola from clausola from definisce la definisce la tabella da cui accedere ai dati tabella da cui accedere ai dati
tab1tab1
tab3tab3
tab2tab2
tab1tab1
databasedatabase
fromfrom
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7070
Esecuzione di Select Esecuzione di Select (3)(3) 2) clausola where 2) clausola where riduce la riduce la
selezione secondo una condizioneselezione secondo una condizione
wherewhere
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7171
Esecuzione di Select Esecuzione di Select (4)(4) 3) clausola group by 3) clausola group by raggruppa raggruppa
le righe in base a certi valori le righe in base a certi valori uguali di certe colonne uguali di certe colonne
group bygroup by
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7272
Esecuzione di Select Esecuzione di Select (5)(5) 4) clausola having 4) clausola having impone impone
condizioni sulla scelta delle righe condizioni sulla scelta delle righe
havinghaving
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7373
Esecuzione di Select Esecuzione di Select (6)(6) 5) clausola select 5) clausola select seleziona le seleziona le
colonnecolonne
selectselect
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7474
Esecuzione di Select Esecuzione di Select (7)(7) 6) clausola order by 6) clausola order by ordina le ordina le
righe selezionaterighe selezionate
selectselect
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7575
Operatori di ricercaOperatori di ricerca
Operatori di confrontoOperatori di confronto
Operatori logici Operatori logici
BETWEEN: valore compreso fra…BETWEEN: valore compreso fra…
IN : appartenenza ad un insiemeIN : appartenenza ad un insieme
LIKE: ricerca con metacaratteriLIKE: ricerca con metacaratteri
IS : controllo dei campi NULL IS : controllo dei campi NULL
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7676
Operatori di confrontoOperatori di confronto
== uguale uguale << minore minore >> maggiore maggiore <><> diverso diverso <=<= minore o uguale minore o uguale >=>= maggiore o uguale maggiore o uguale
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7777
Operatori logiciOperatori logici
NOTNOT negazione logica negazione logica
a NOT aa NOT a
FF V V
VV F F
– L’uscita è il negato dell’ingressoL’uscita è il negato dell’ingresso
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7878
Operatori logici (2)Operatori logici (2)
AND AND prodotto logico prodotto logico
a b a AND ba b a AND b
F F FF F F
F VF V F F
V F FV F F
V VV V V V
– L’uscita è vera se entrambi gli ingressi sono veriL’uscita è vera se entrambi gli ingressi sono veri
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 7979
Operatori logici (3)Operatori logici (3)
OROR somma logica somma logica
a b a OR ba b a OR b
F F FF F F
F VF V V V
V F VV F V
V VV V V V
– L’uscita è vera se almeno un ingresso è veroL’uscita è vera se almeno un ingresso è vero
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8080
Operatore BETWEENOperatore BETWEEN
Controlla un intervalloControlla un intervallo
Esercizio: Utilizzando la tabella Esercizio: Utilizzando la tabella personale visualizzare personale visualizzare l’ elenco dei dipendenti con cognome , l’ elenco dei dipendenti con cognome , nome e funzione, assunti da febbraio nome e funzione, assunti da febbraio ad agosto 2006ad agosto 2006
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8181
RispostaRisposta
SELECTSELECT Cognome, Nome, Funzione Cognome, Nome, Funzione
FROMFROM personale personale
WHEREWHERE Assunto Assunto BETWEENBETWEEN 01/02/06 01/02/06 ANDAND 31/08/06 31/08/06
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8282
Operatore INOperatore IN
Controlla l’appartenenza ad un Controlla l’appartenenza ad un insieme insieme
EsercizioEsercizio Visualizzare l’elenco completo di tutti i Visualizzare l’elenco completo di tutti i
dati dei dipendenti residenti nelle province dati dei dipendenti residenti nelle province CT, ME, PA, ENCT, ME, PA, EN
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8383
RispostaRisposta
SELECTSELECT * *
FROMFROM Personale Personale
WHEREWHERE Prov Prov ININ (‘CT’,’ME’,’PA’, ‘En’); (‘CT’,’ME’,’PA’, ‘En’);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8484
Operatore LIKEOperatore LIKE
Permette l’utilizzo di caratteri jolly Permette l’utilizzo di caratteri jolly o metacaratteri:o metacaratteri:__ (underscore) (underscore) singolo carattere qualunque singolo carattere qualunque
%% (percento) (percento) stringa qualunque stringa qualunque
LIKELIKE ‘abc%’ ‘abc%’ stringhe che iniziano con abc stringhe che iniziano con abc
LIKELIKE ‘abc_’ ‘abc_’ stringhe di 4 char che iniziano con abc stringhe di 4 char che iniziano con abc
LIKELIKE ‘%abc%’ ‘%abc%’ stringhe che contengono abc stringhe che contengono abc
LIKELIKE ‘%abc’ ‘%abc’ stringhe che terminano con abc stringhe che terminano con abc
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8585
Operatore LIKE (2)Operatore LIKE (2)
Esercizio: Visualizzare l’elenco con cognome e Esercizio: Visualizzare l’elenco con cognome e filiale dei dipendenti aventi cognome che filiale dei dipendenti aventi cognome che inizia con ‘Mac’inizia con ‘Mac’
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8686
RispostaRisposta
SELECTSELECT Cognome, Filiale Cognome, Filiale
FROMFROM Personale Personale
WHEREWHERE Cognome Cognome LIKELIKE ‘Mac%’; ‘Mac%’;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8787
Operatore ISOperatore IS
E’ utilizzato con NULL oppure con NOT E’ utilizzato con NULL oppure con NOT NULL per verificare se un certo campo NULL per verificare se un certo campo è o no NULL:è o no NULL:
SELECTSELECT Cognome, Nome Cognome, Nome
FROMFROM personale personale
WHEREWHERE Prov Prov IS NOT NULLIS NOT NULL
elenco dei dipendenti nel cui record è indicata la elenco dei dipendenti nel cui record è indicata la provinciaprovincia
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8888
SubquerySubquery
Il comando Il comando selectselect permette di permette di inserire un altro comando select inserire un altro comando select all’interno della struttura di un all’interno della struttura di un comando select creando comando select creando interrogazioni nidificate interrogazioni nidificate subquery o select internasubquery o select interna
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 8989
Subquery (2)Subquery (2)
La condizione scritta dopo il La condizione scritta dopo il where confronta il valore di un where confronta il valore di un attributo con il risultato di un altro attributo con il risultato di un altro comando selectcomando select
Una subquery può restituireUna subquery può restituire– Un valore singoloUn valore singolo– Nessun valoreNessun valore– Un insieme di valoriUn insieme di valori
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9090
Subquery (3)Subquery (3)
La clausola La clausola selectselect di subquery di subquery– Può far riferimento a una singola Può far riferimento a una singola
colonna o ad una espressione colonna o ad una espressione – Non può contenere Non può contenere distintcdistintc– Non può contenere Non può contenere order byorder by– Può avere altre Può avere altre selectselect dentro dentro wherewhere
e e havinghaving
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9191
Subquery sempliciSubquery semplici
Dapprima viene valutata la query Dapprima viene valutata la query interna il cui risultato viene interna il cui risultato viene utilizzato dalla query esternautilizzato dalla query esterna
La query interna deve fornire La query interna deve fornire pertanto fornire un risultato che pertanto fornire un risultato che possa essere valutato in termini possa essere valutato in termini booleani dalla where esterna booleani dalla where esterna
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9292
Subquery semplici (2)Subquery semplici (2)
Elenco nominativo dei dipendenti con Elenco nominativo dei dipendenti con StipBase > della media degli stipendi StipBase > della media degli stipendi
SELECT Cognome, NomeSELECT Cognome, Nome
From From personalepersonale
Where Where StipBase >StipBase > (select avg (select avg (Stipbase)(Stipbase)
From From personale); personale);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9393
Subquery semplici (3)Subquery semplici (3)
Esercizio: visualizzare l’elenco con Esercizio: visualizzare l’elenco con cognome, nome e descrizione della cognome, nome e descrizione della filiale in cui operano dei dipendenti filiale in cui operano dei dipendenti aventi Stipendio pari al max per la aventi Stipendio pari al max per la funzione impiegato. L’elenco va funzione impiegato. L’elenco va visualizzato ordinato per cognome e visualizzato ordinato per cognome e nome. nome.
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9494
RispostaRisposta
SELECT SELECT Cognome, Nome, DescrizioneCognome, Nome, Descrizione
From From personale, dipendenzapersonale, dipendenza
Where Where Filiale=CodFilFiliale=CodFil
AndAnd StipBase = StipBase = ((select maxselect max(Stipbase)(Stipbase)
FromFrom personale personale
wherewhere Funzione=’impiegato’)Funzione=’impiegato’)
Order byOrder by Cognome, Nome; Cognome, Nome;
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9595
Subquery con anySubquery con any
Il predicato Il predicato anyany indica che la indica che la subquery può restituire subquery può restituire – 00– 11– Insieme di valoriInsieme di valori
E che la condizione di ricerca è E che la condizione di ricerca è verificata se il confronto è vero verificata se il confronto è vero per almeno uno dei valori per almeno uno dei valori restituiti restituiti
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9696
Subquery con any (2)Subquery con any (2)
– La condizione di ricerca è falsa se la La condizione di ricerca è falsa se la subquery restituisce un insieme subquery restituisce un insieme vuoto oppure se il confronto è falso vuoto oppure se il confronto è falso per ciascuno dei valori restituiti dalla per ciascuno dei valori restituiti dalla subquerysubquery
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9797
Subquery con any (3)Subquery con any (3)
Esercizio: visualizzare l’elenco Esercizio: visualizzare l’elenco con cognome nome e funzione con cognome nome e funzione dei dipendenti non impiegati e dei dipendenti non impiegati e aventi Stipbase > di uno qualsiasi aventi Stipbase > di uno qualsiasi di quello degli impiegatidi quello degli impiegati
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9898
RispostaRisposta
SELECT SELECT Cognome, Nome,FunzioneCognome, Nome,Funzione
From From personalepersonale
Where Where Funzione <> ‘impiegato’Funzione <> ‘impiegato’
And And StipBase >StipBase > any any ((select select StipbaseStipbase
From From personalepersonale
wherewhere funzione=‘impiegato’);funzione=‘impiegato’);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 9999
Subquery con allSubquery con all
Il predicato Il predicato allall indica che la indica che la subquery può restituire subquery può restituire – 00– 11– Insieme di valoriInsieme di valori
E che la condizione di ricerca è E che la condizione di ricerca è verificata se il confronto è vero verificata se il confronto è vero per tutti i valori restituiti per tutti i valori restituiti
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 100100
Subquery con all (2)Subquery con all (2)
– La condizione di ricerca è falsa se il La condizione di ricerca è falsa se il confronto è falso per almeno uno tra confronto è falso per almeno uno tra i valori restituiti dalla subqueryi valori restituiti dalla subquery
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 101101
Subquery con all (3)Subquery con all (3)
Esercizio: visualizzare l’elenco Esercizio: visualizzare l’elenco con cognome, nome e funzione con cognome, nome e funzione dei dipendenti non impiegati dei dipendenti non impiegati aventi Stipbase > a quello di tutti aventi Stipbase > a quello di tutti gli impiegati gli impiegati
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 102102
RispostaRisposta
SELECT SELECT Cognome, Nome,FunzioneCognome, Nome,Funzione
From From personalepersonale
Where Where Funzione <> ‘impiegato’Funzione <> ‘impiegato’
And And StipBase >StipBase > all all ((select select StipbaseStipbase
From From personalepersonale
wherewhere Funzione=‘impiegato’);Funzione=‘impiegato’);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 103103
Subquery con INSubquery con IN
Il predicato Il predicato IN IN serve a controllare serve a controllare se il valore di un attributo è se il valore di un attributo è compreso fra quelli restituiti dalla compreso fra quelli restituiti dalla subquery effettuata con la select subquery effettuata con la select nidificatanidificata
E’ possibile utilizzare E’ possibile utilizzare NOT IN NOT IN per per ottenere la condizione opposta ottenere la condizione opposta
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 104104
Subquery con IN (2)Subquery con IN (2)
Esercizio: visualizzare l’elenco con Esercizio: visualizzare l’elenco con cognome e nome dei dipendenti che cognome e nome dei dipendenti che operano nelle filiali con più di 20 operano nelle filiali con più di 20 dipendentidipendenti
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 105105
RispostaRisposta
SELECT SELECT Cognome, NomeCognome, NomeFrom From personalepersonaleWhere Where Filiale Filiale ININ ( (select select FilialeFiliale
From From personalepersonalegroup bygroup by Filiale Filiale Having count(*) Having count(*)
>20);>20);
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 106106
Equivalenze IN – ANY - ALLEquivalenze IN – ANY - ALL
Si osservi che la condizione Si osservi che la condizione
wherewhere attributo attributo ININ ( (selectselect…)…)
Equivale a: Equivale a: wherewhere attributo = attributo = ANYANY ( (selectselect…)…)
•Analogamente la condizione Analogamente la condizione wherewhere attributo attributo NOTNOT IN IN ((selectselect…)…)
Equivale a: Equivale a: wherewhere attributo < > attributo < > ALLALL ( (selectselect…)…)
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 107107
Subquery con existsSubquery con exists
Il predicato exists controlla se Il predicato exists controlla se vengono restituite righe vengono restituite righe dall’esecuzione della subquery dall’esecuzione della subquery
La condizione è La condizione è – vera se la select nidificata produce vera se la select nidificata produce
una o più righe una o più righe – falsa se restituisce un insieme vuoto falsa se restituisce un insieme vuoto
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 108108
Subquery con exists Subquery con exists (2)(2) Nelle subquery con exists le Nelle subquery con exists le
colonne sono irrilevanti pertanto colonne sono irrilevanti pertanto nella subquery si utilizza il nella subquery si utilizza il carattere *carattere *
E’ possibile utilizzare la forma E’ possibile utilizzare la forma negativa NOT EXISTSnegativa NOT EXISTS
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 109109
Subquery con exists Subquery con exists (3)(3) Esercizio: Visualizzare l’ elenco Esercizio: Visualizzare l’ elenco
cognome e nome dei dipendenti se cognome e nome dei dipendenti se esistono dipendenti di livello 8esistono dipendenti di livello 8
Esempi SQL - Prof Ing G. La RosaEsempi SQL - Prof Ing G. La Rosa 110110
RispostaRisposta
SELECT SELECT Cognome, NomeCognome, Nome
From From personalepersonale
Where exists Where exists ( (select * select *
From From personalepersonale
wherewhere livello=8);livello=8);