La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Esempi SQL - Prof Ing G. La Rosa1 Elaborazione dati informatici Università degli Studi di Catania Facoltà medicina Corsi di laurea in: Tecnici di Radiologia.

Presentazioni simili


Presentazione sul tema: "Esempi SQL - Prof Ing G. La Rosa1 Elaborazione dati informatici Università degli Studi di Catania Facoltà medicina Corsi di laurea in: Tecnici di Radiologia."— Transcript della presentazione:

1 Esempi SQL - Prof Ing G. La Rosa1 Elaborazione dati informatici Università degli Studi di Catania Facoltà medicina Corsi di laurea in: Tecnici di Radiologia Medica per Immagini Radioterapia Tecnici di Radiologia Medica per Immagini Radioterapia

2 Esempi SQL - Prof Ing G. La Rosa2 Linguaggio SQL Prof Ing Gaetano La Rosa Web:

3 Esempi SQL - Prof Ing G. La Rosa3 SQL: caratteri SQL utilizza SQL utilizza –i caratteri alfabetici; –Cifre decimali; –Operatori aritmetici (+ - * /); –Operatori di confronto ( ); –Caratteri di sintassi (, ;);

4 Esempi SQL - Prof Ing G. La Rosa4 SQL: identificatori Gli identificatori sono i nomi di tabelle o di attributi Gli identificatori sono i nomi di tabelle o di attributi Sono costituiti da sequenze di caratteri di lunghezza non superiore a 18 Sono costituiti da sequenze di caratteri di lunghezza non superiore a 18 Devono iniziare con una lettera e possono contenere il carattere _ Devono iniziare con una lettera e possono contenere il carattere _ Per separare il nome tabella dal nome attributo si utilizza il carattere. Per separare il nome tabella dal nome attributo si utilizza il carattere. –Nometabella.nomeattributo

5 Esempi SQL - Prof Ing G. La Rosa5 SQL: tipi di dati Nella dichiarazione della struttura di una tabella occorre specificare il tipo di dati per ogni attributo Nella dichiarazione della struttura di una tabella occorre specificare il tipo di dati per ogni attributo Alcuni tipi standard: Alcuni tipi standard: –character(n) stringa n char –Character stringa 1 char –Date data nel formato aaaa/mm/gg –Time ora nel formato hh:mm –Integer(p) intero con precisione p –Smallint intero con precisione 5 –Integer intero con precisione 10

6 Esempi SQL - Prof Ing G. La Rosa6 SQL: tipi di dati (2) –Decimal(p,s) decimale con precisione p e cifre decimali s –Real numero reale con precisione 7 –Float(p) numero reale con mantissa di precisione p –Float numero reale con mantissa di precisione 15 Abbreviazioni Abbreviazioni –Char(n) anziché character(n) –Char anziché character –Int(p) anziché integer(p) –Dec(p,s) anziché decimal(p,s) NB alcune versioni SQL prevedono definizioni tipi lievemente diverse NB alcune versioni SQL prevedono definizioni tipi lievemente diverse

7 Esempi SQL - Prof Ing G. La Rosa7 Costanti e operatori Le costanti stringa sono delimitate da apici: stringa Le costanti stringa sono delimitate da apici: stringa Gli attributi che non hanno un valore definito assumono il valore NULL (diverso sia da 0 che da stringa vuota) Gli attributi che non hanno un valore definito assumono il valore NULL (diverso sia da 0 che da stringa vuota) Sono previsti gli operatori NOT, AND, OR Sono previsti gli operatori NOT, AND, OR Clausola not null: va inserita accanto ai nomi degli attributi che non possono prevedere valori null (ad esempio le chiavi) Clausola not null: va inserita accanto ai nomi degli attributi che non possono prevedere valori null (ad esempio le chiavi)

8 Esempi SQL - Prof Ing G. La Rosa8 Comandi DDL: Data Definition Language Permettono di implementare il modello logico dei dati sulle memorie di massa. Permettono di implementare il modello logico dei dati sulle memorie di massa. Nelle più recenti versioni di DBMS dette operazioni sono effettuate con interfacce interattive senza luso di comandi specifici. Nelle più recenti versioni di DBMS dette operazioni sono effettuate con interfacce interattive senza luso di comandi specifici.

9 Esempi SQL - Prof Ing G. La Rosa9 Comando CREATE TABLE Utilizzato per la creazione di tabelle Utilizzato per la creazione di tabelle Va seguito dal nome della tabella e dallelenco degli attributi: Va seguito dal nome della tabella e dallelenco degli attributi: –CREATE TABLE personale (Matricolachar(5), Cognomechar(30), Nomechar(30), CodFischar(16) not null, Assuntodate, Filialesmallint, Funzione char(15), Livellosmallint, StipBaseinteger, Viachar(25), Capchar(5), Cittachar(20), Provchar(2) );

10 Esempi SQL - Prof Ing G. La Rosa10 Modifica di una tabella creata ALTER TABLE: permette di modificare una tabella con aggiunta (ADD) o rimozione (DROP) di attributi: ALTER TABLE: permette di modificare una tabella con aggiunta (ADD) o rimozione (DROP) di attributi: –ALTERTABLE personale ADDNascita date; ADDNascita date; –ALTER TABLE personale DROP StipBase; DROP StipBase;

11 Esempi SQL - Prof Ing G. La Rosa11 Creazione di indici su tabelle CREATE INDEX: permette la creazione di un nuovo indice su una tabella esistente su specifici attributi: CREATE INDEX: permette la creazione di un nuovo indice su una tabella esistente su specifici attributi: –CREATE INDEX Ipersonale ON personale (cognome, Nome);

12 Esempi SQL - Prof Ing G. La Rosa12 Cancellazione di tabelle e indici: DROP DROP TABLE personale; DROP TABLE personale; DROP INDEX Ipersonale ON personale; DROP INDEX Ipersonale ON personale;

13 Esempi SQL - Prof Ing G. La Rosa13 Comandi DML: Data Manipulation Language Permettono di modificare i valori degli attributi mediante inserimento, modifica e cancellazione. Permettono di modificare i valori degli attributi mediante inserimento, modifica e cancellazione. –INSERT, UPDATE, DELETE Anche questi comandi in alcune versioni di DBMS possono risultare nascosti allutente grazie allutilizzo di maschere e interfacce visuali Anche questi comandi in alcune versioni di DBMS possono risultare nascosti allutente grazie allutilizzo di maschere e interfacce visuali

14 Esempi SQL - Prof Ing G. La Rosa14 Comandi DML: INSERT INSERT INTO personale (Matricola, Cognome, Nome, CodFis, Nascita, assunto, Filiale, Funzione, Livello, StipBase, Via, Cap, Citta, Prov) VALUES (CS342,Pillera, Luigi, PLLLGU…, ………,CT);

15 Esempi SQL - Prof Ing G. La Rosa15 Comandi DML: UPDATE UPDATE personale SET Livello=6, SET Stipbase=1260, WHERE matricola=CS212; UPDATE personale SET Stipbase=Stipbase*1.05, WHERE livello >5;

16 Esempi SQL - Prof Ing G. La Rosa16 Comandi DML: DELETE DELETE FROM personale WHERE Matricola=CS102; DELETE FROM personale WHERE Stipbase < 500;

17 Esempi SQL - Prof Ing G. La Rosa17 Comandi di interrogazione: SELECT SELECT [ALL| DISTINCT] Attributi FROM Tabelle [WHERE Condizione];

18 Esempi SQL - Prof Ing G. La Rosa18 QUERY su TABELLA studenti

19 Esempi SQL - Prof Ing G. La Rosa19 QUERY su TABELLA studenti (2) SELECT Indirizzo, Telefono FROM Studenti WHERE Nome=Teo Verdi

20 Esempi SQL - Prof Ing G. La Rosa20 Altri esempi: Utilizzando il database personale 1 Visualizzare Cognome, nome e codice fiscale del personale avente qualifica impiegato 2 Visualizzare tutti i dati del personale avente residenza in Milano

21 Esempi SQL - Prof Ing G. La Rosa21 Risposte 1) SELECT Cognome, Nome, CodFis FROM personale WHERE Funzione=impiegato; 2) SELECT * FROM personale WHERE Prov=MI;

22 Esempi SQL - Prof Ing G. La Rosa22 Clausola distinct SELECT Funzione FROM personale; produce lelenco di tutte le professioni dei dipendenti ripetendo la stessa professione in righe diverse quanti sono i dipendenti che svolgono quella funzione SELECT DISTINCT Funzione FROM personale; produce lelenco di tutte le professioni dei dipendenti specificando una sola volta le singole funzioni presenti

23 Esempi SQL - Prof Ing G. La Rosa23 Clausola AS La clausola AS serve per assegnare lintestazione della tabella che si ottiene a seguito di un comando SELECT Esempi: Utilizzando il database personale visualizzare 1 L elenco di tutte le province di provenienza dei dipendenti con intestazione Provincia 1 L elenco di tutte le province di provenienza dei dipendenti con intestazione Provincia 2 l elenco di tutti i dipendenti con cognome, nome, stipendio attuale con intestazione attuale e valore previsionale in caso di aumento del 5% con intestazione Nuovo. (Il database non deve subire modifiche) 2 l elenco di tutti i dipendenti con cognome, nome, stipendio attuale con intestazione attuale e valore previsionale in caso di aumento del 5% con intestazione Nuovo. (Il database non deve subire modifiche)

24 Esempi SQL - Prof Ing G. La Rosa24 Risposte 1 SELECT DISTINCT Prov AS Provincia FROM personale; 2 SELECT Cognome, Nome, Stipbase AS Attuale, StipBase*1.05 AS Nuovo FROM personale;

25 Esempi SQL - Prof Ing G. La Rosa25 Query parametriche (MSAccess) SELECT Cognome, Nome FROM personale WHERE Funzione =impiegato; Query fissa su attributo Funzione= impiegato SELECT Cognome, Nome FROM personale WHERE Funzione =[quale funzione?]; Query parametrica su attributo Funzione Il sistema chiederà quale funzione?

26 Esempi SQL - Prof Ing G. La Rosa26 Capacità del comando SQL SELECT Selezione Proiezione Tabella 1 Tabella 2 Tabella 1 Join

27 Esempi SQL - Prof Ing G. La Rosa27 Selezione Selezione consente di ricavare da una relazione unaltra relazione contenente solo le righe che soddisfano una certa condizione Selezione consente di ricavare da una relazione unaltra relazione contenente solo le righe che soddisfano una certa condizione Si realizza con la clausola WHERE Si realizza con la clausola WHERE SELECT * FROM personale WHERE Funzione = dirigente;

28 Esempi SQL - Prof Ing G. La Rosa28 Proiezione Proiezione consente di ricavare da una relazione unaltra relazione contenente solo alcune colonne della relazione di partenza Proiezione consente di ricavare da una relazione unaltra relazione contenente solo alcune colonne della relazione di partenza Si realizza indicando accanto a SELECT gli attributi richiesti Si realizza indicando accanto a SELECT gli attributi richiesti SELECT Cognome, Nome FROM personale;

29 Esempi SQL - Prof Ing G. La Rosa29 Congiunzione - Join Congiunzione consente la congiunzione di più tabelle attraverso degli attributi comuni Congiunzione consente la congiunzione di più tabelle attraverso degli attributi comuni CREATE TABLE personale (Matricola char(5) not null, Cognomechar(30), Nomechar(30), CodFis char(16) not null, Assuntodate, Filialesmallint, Funzione char(15), Livellosmallint, StipBaseinteger, Viachar(25), Capchar(5), Cittachar(20), Provchar(2) ); CREATE TABLE dipendenza (CodFil smallint not null Descrizionechar(20) Indirizzochar(25) ); Fra dipendenza e personale esiste unassociazione 1 n pertanto la chiave di dipendenza (CodFil) viene posta come chiave esterna in personale (Filiale)

30 Esempi SQL - Prof Ing G. La Rosa30 Congiunzione – Join (2) Utilizzando la join e le tabelle personale e dipendenza creare la query per visualizzare lelenco di tutti i dipendenti (completo di tutti i dati) con lindicazione e la descrizione della filiale nella quale lavorano Utilizzando la join e le tabelle personale e dipendenza creare la query per visualizzare lelenco di tutti i dipendenti (completo di tutti i dati) con lindicazione e la descrizione della filiale nella quale lavorano

31 Esempi SQL - Prof Ing G. La Rosa31Risposta SELECT * FROM personale, dipendenza WHERE Filiale=CodFil; FROM personale, dipendenza WHERE Filiale=CodFil; SELECT * FROM personale, dipendenza WHERE personale.Filiale = dipendenza.CodFil; oppure SELECT * FROM personale INNER JOIN dipendenza FROM personale INNER JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; ON personale.Filiale = dipendenza.CodFil; oppure

32 Esempi SQL - Prof Ing G. La Rosa32 Congiunzione – Left/Right Join La forma La forma SELECT * FROM personale INNER JOIN dipendenza FROM personale INNER JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; ON personale.Filiale = dipendenza.CodFil; Permette di selezionare le righe delle due tabelle con lattributo comune INNER JOIN o EQUI JOIN. Se si desidera visualizzare altre informazioni di record per i quali non sussiste la corrispondenza fra le due tabelle è possibile utilizzare left o right prima di join a seconda se i dati da visualizzare stanno posti sulla matrice di destra o sinistra rispetto al join

33 Esempi SQL - Prof Ing G. La Rosa33 Congiunzione – Left Join SELECT * FROM personale LEFT JOIN dipendenza FROM personale LEFT JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; ON personale.Filiale = dipendenza.CodFil; Permette di selezionare le righe delle due tabelle con lattributo comune e gli eventuali campi della tabella personale (tabella di sinistra) non aventi corrispondenze nella tabella di destra.

34 Esempi SQL - Prof Ing G. La Rosa34 Congiunzione –Right Join SELECT * FROM personale RIGHT JOIN dipendenza FROM personale RIGHT JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; ON personale.Filiale = dipendenza.CodFil; Permette di selezionare le righe delle due tabelle con lattributo comune e gli eventuali campi della tabella dipendenza (tabella di destra) non aventi corrispondenze nella tabella di sinistra.

35 Esempi SQL - Prof Ing G. La Rosa35 Congiunzione – Self-Join La congiunzione è detta di self-Join quando opera su una medesima tabella La congiunzione è detta di self-Join quando opera su una medesima tabella ES: aggiungiamo alla tabella personale lattributo Dirigente che contiene il codice della persona che dirige il dipendente. Le informazioni sul Dirigente, in quanto anchesso dipendente, saranno contenute sulle medesima tabella personale. ES: aggiungiamo alla tabella personale lattributo Dirigente che contiene il codice della persona che dirige il dipendente. Le informazioni sul Dirigente, in quanto anchesso dipendente, saranno contenute sulle medesima tabella personale.

36 Esempi SQL - Prof Ing G. La Rosa36 Congiunzione – Self-Join (2) CREATE TABLE personale (Matricolachar(5), Cognomechar(30), … Assuntodate, Dirigentechar(5), Filialesmallint, … Provchar(2) ); Esempio: Utilizzando il self join e la tabella personale con il campo dirigente, visualizzare lelenco dei dipendenti con i dati cognome e nome del dipendente e indicazione del cognome del relativo dirigente Per effettuare una self-join si utilizzano gli alias sui nomi delle tabelle utilizzando la clausola AS. Per effettuare una self-join si utilizzano gli alias sui nomi delle tabelle utilizzando la clausola AS.

37 Esempi SQL - Prof Ing G. La Rosa37Risposta SELECT Tab1.Cognome, Tab1.Nome, Tab2.Cognome FROM personale AS Tab1, personale AS Tab2 FROM personale AS Tab1, personale AS Tab2 WHERE Tab1.Dirigente = Tab2.Matricola ; WHERE Tab1.Dirigente = Tab2.Matricola ;

38 Esempi SQL - Prof Ing G. La Rosa38 Operatori logici AND, OR, NOT AND, OR, NOT Esercizio: Realizzare una Query per ottenere elenco dei dipendenti con funzione impiegato con cognome, nome, descrizione e indirizzo della filiale dove lavorano:

39 Esempi SQL - Prof Ing G. La Rosa39 Risposta SELECT Cognome, Nome, Descrizione, indirizzo FROM personale, dipendenza WHERE Funzione=impiegato AND Filiale=CodFil; …. O per maggiore chiarezza:

40 Esempi SQL - Prof Ing G. La Rosa40 Risposta SELECT personale.Cognome, personale.Nome, dipendenza.Descrizione, dipendenza.indirizzo FROM personale, dipendenza WHERE personale.Funzione=impiegato AND personale.Filiale=dipendenza.CodFil;

41 Esempi SQL - Prof Ing G. La Rosa41 Funzioni di aggregazione COUNT: conteggio COUNT: conteggio SUM: somma SUM: somma AVG: media AVG: media MIN: minimo MIN: minimo MAX: massimo MAX: massimo

42 Esempi SQL - Prof Ing G. La Rosa42 Funzione COUNT Conta le righe presenti in una tabella Conta le righe presenti in una tabella Sintassi: COUNT(arg) Sintassi: COUNT(arg) Arg= * tutte le righe Arg= attributo tutte le righe con att !=NULL COUNT permette di determinare la cardinalità di una relazione COUNT permette di determinare la cardinalità di una relazione Può utilizzarsi con clausola WHERE Può utilizzarsi con clausola WHERE

43 Esempi SQL - Prof Ing G. La Rosa43 Funzione COUNT (2) Esercizio Utilizzando la funzione count visualizzare: 1 Il numero di dipendenti presenti nel database personale; 2 il numero di dipendenti aventi uno specifico livello assegnato (ovvero con campo !=Null) 3 il numero di dipendenti residenti nella provincia di Catania

44 Esempi SQL - Prof Ing G. La Rosa44 Risposta 1 SELECT COUNT (*) FROM personale; 2 SELECT COUNT(livello) FROM personale; 3 SELECT COUNT(*) FROM personale WHERE Prov=CT;

45 Esempi SQL - Prof Ing G. La Rosa45 Funzione COUNT (3) Esercizio Esercizio Utilizzando la clausola DISTINCT visualizzare il numero di differenti livelli che risiedono nella provincia di CT. Intestare luscita con livelli. Utilizzando la clausola DISTINCT visualizzare il numero di differenti livelli che risiedono nella provincia di CT. Intestare luscita con livelli.

46 Esempi SQL - Prof Ing G. La Rosa46 Risposta SELECT COUNT (DISTINCT livello) AS livelli FROM personale WHERE Prov=CT;

47 Esempi SQL - Prof Ing G. La Rosa47 Funzione SUM Restituisce la somma dei valori di una colonna di tipo numerico Restituisce la somma dei valori di una colonna di tipo numerico Eventuali campi NULL vanno considerati come 0 Eventuali campi NULL vanno considerati come 0 Può utilizzarsi con clausola WHERE e DISTINCT Può utilizzarsi con clausola WHERE e DISTINCT

48 Esempi SQL - Prof Ing G. La Rosa48 Funzione SUM (2) Esercizio Utilizzando larchivio personale visualizzare 1. la Somma degli stipendi base (stipbase) appartenenti al livello 5 2. La somma degli stipendi base del livello 5 qualora si effettui un aumento del 10%, intestando la colonna come Previsione

49 Esempi SQL - Prof Ing G. La Rosa49 Risposta 1 SELECT SUM (StipBase) FROM personale WHERE Livello=5; 2 SELECT SUM (StipBase*1,1) AS Previsione FROM personale WHERE Livello = 5;

50 Esempi SQL - Prof Ing G. La Rosa50 Funzione AVG (average) Restituisce la media aritmetica dei valori di una colonna di tipo numerico Restituisce la media aritmetica dei valori di una colonna di tipo numerico Eventuali campi NULL non influiscono nel computo della media Eventuali campi NULL non influiscono nel computo della media Può utilizzarsi con clausola WHERE e DISTINCT Può utilizzarsi con clausola WHERE e DISTINCT SELECT AVG (StipBase) FROM personale WHERE Funzione=Impiegato;

51 Esempi SQL - Prof Ing G. La Rosa51 Funzioni MAX e MIN Restituiscono rispettivamente il max e il min tra i valori di una colonna Restituiscono rispettivamente il max e il min tra i valori di una colonna Operano anche su attributi sia numerici che di tipo carattere Operano anche su attributi sia numerici che di tipo carattere Ignorano i campi NULL Ignorano i campi NULL Largomento di MIN e MAX può essere unespressione numerica Largomento di MIN e MAX può essere unespressione numerica Può utilizzarsi con clausola WHERE Può utilizzarsi con clausola WHERE

52 Esempi SQL - Prof Ing G. La Rosa52 Funzioni MAX e MIN (2) SELECT MIN(StipBase), MAX (StipBase) FROM personale; SELECT MIN (Cognome), MAX (Cognome) FROM personale;

53 Esempi SQL - Prof Ing G. La Rosa53 Funzioni di ordinamento e raggruppamento ORDER BY: criterio di ordinamento ORDER BY: criterio di ordinamento GROUP BY: criterio di raggruppamento GROUP BY: criterio di raggruppamento

54 Esempi SQL - Prof Ing G. La Rosa54 FUNZIONE ORDER BY Permette di ordinare il risultato di una query secondo i valori contenuti in una o più colonne Permette di ordinare il risultato di una query secondo i valori contenuti in una o più colonne Opera sia su valori numerici che carattere Opera sia su valori numerici che carattere Può essere ascendente ASC (default) o discendente DESC Può essere ascendente ASC (default) o discendente DESC Il valore NULL sarà posta allinizio delle sequenze crescenti, alla fine in quelle decrescenti Il valore NULL sarà posta allinizio delle sequenze crescenti, alla fine in quelle decrescenti

55 Esempi SQL - Prof Ing G. La Rosa55 FUNZIONE ORDER BY (2) Esercizio Utilizzando la tabella personale visualizzare 1. E lenco alfabetico dei dipendenti con cognome, nome, data_nascita e CF ordinato per cognome e, in caso di cognomi uguali, per nome 2. Elenco dei dipendenti con cognome e stipendio per stipendio decrescente e, a parità di stipendio, per cognome crescente

56 Esempi SQL - Prof Ing G. La Rosa56 Risposta SELECT Cognome, Nome, CodFisc,Nascita FROM personale ORDER BY Cognome, Nome; SELECT Cognome, StipBase FROM personale ORDER BY StipBase DESC, Cognome;

57 Esempi SQL - Prof Ing G. La Rosa57 FUNZIONE GROUP BY Permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate (statistiche) Permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate (statistiche) Produce una riga per ogni raggruppamento Produce una riga per ogni raggruppamento Se utilizzata con funzioni di aggregazione produce un valore di raggruppamento per ciascuna riga Se utilizzata con funzioni di aggregazione produce un valore di raggruppamento per ciascuna riga I valori NULL vengono raggruppati solo se si utilizza COUNT(*) I valori NULL vengono raggruppati solo se si utilizza COUNT(*) Tutti gli attributi posti nella lista del SELECT devono essere inclusi nella clausola GROUP BY oppure essere argomenti di una funzione di aggregazione Tutti gli attributi posti nella lista del SELECT devono essere inclusi nella clausola GROUP BY oppure essere argomenti di una funzione di aggregazione

58 Esempi SQL - Prof Ing G. La Rosa58 FUNZIONE GROUP BY (2) Esercizio: utilizzando la tabella personale visualizzare la lista delle funzioni dei dipendenti con la somma degli stipendi e il numero dei dipendenti appartenenti alle diverse funzioni (tante righe quante sono le funzioni diverse)

59 Esempi SQL - Prof Ing G. La Rosa59 Risposta SELECT Funzione, SUM (StipBase), COUNT (*) FROM personale GROUP BY Funzione;

60 Esempi SQL - Prof Ing G. La Rosa60 FUNZIONE GROUP BY (3) Esercizio: Visualizzare l elenco dei livelli esistenti tra i dipendenti con funzione di impiegato con il numero di dipendenti per ciascun livello intestato come conteggio (una riga per ogni livello)

61 Esempi SQL - Prof Ing G. La Rosa61 Risposta SELECT Livello, COUNT (Livello) AS Conteggio FROM personale WHERE Funzione=impiegato GROUP BY Livello;

62 Esempi SQL - Prof Ing G. La Rosa62 Clausola HAVING La clausola HAVING è, in genere, utilizzata con GROUP BY e serve ad aggiungere dei controlli sui gruppi di righe ottenuti La clausola HAVING è, in genere, utilizzata con GROUP BY e serve ad aggiungere dei controlli sui gruppi di righe ottenuti Dopo che GROUP BY ha formato dei raggruppamenti HAVING serve a visualizzare le righe di raggruppamento che soddisfano determinate condizioni Dopo che GROUP BY ha formato dei raggruppamenti HAVING serve a visualizzare le righe di raggruppamento che soddisfano determinate condizioni

63 Esempi SQL - Prof Ing G. La Rosa63 Clausola HAVING (2) Esercizio: Visualizzare lelenco delle funzioni dei dipendenti con lo stipendio medio per ciascuna funzione nella quale ci siano almeno 2 dipendenti (non vengono visualizzate funzioni con un solo dipendente)

64 Esempi SQL - Prof Ing G. La Rosa64 Risposta SELECT Funzione, AVG (StipBase) FROM personale GROUP BY Funzione HAVING COUNT(*) >1;

65 Esempi SQL - Prof Ing G. La Rosa65 Clausola HAVING (3) Esercizio: utilizzando la tabella personale visualizzare l elenco delle filiali con lindicazione del numero dei dipendenti con qualifica impiegato, intestato come conteggio. Omettere le filiali ove questo numero è <= 10

66 Esempi SQL - Prof Ing G. La Rosa66 Risposta SELECT Filiale, COUNT (Filiale) AS Conteggio FROM personale WHERE Funzione=impiegato GROUP BY Filiale HAVING COUNT(*) >10;

67 Esempi SQL - Prof Ing G. La Rosa67 Clausola HAVING (4) HAVING opera un filtraggio come WHERE ma: HAVING opera un filtraggio come WHERE ma: –WHERE agisce sulle righe della tabella –HAVING sui risultati delle funzioni di aggregazione applicati ai gruppi di righe

68 Esempi SQL - Prof Ing G. La Rosa68 Riepilogo di Select Select [all/distinct] * | lista_campi From tabella|tabelle [where condizione] [Group by campo[,campo..]] [having condizione] [order by campo [asc|desc]]

69 Esempi SQL - Prof Ing G. La Rosa69 Esecuzione di Select (2) Lesecuzione del comando select avviene secondo il seguente ordine di clausole: Lesecuzione del comando select avviene secondo il seguente ordine di clausole: 1)clausola from definisce la tabella da cui accedere ai dati 1)clausola from definisce la tabella da cui accedere ai dati tab1 tab3 tab2 tab1 database from

70 Esempi SQL - Prof Ing G. La Rosa70 Esecuzione di Select (3) 2) clausola where riduce la selezione secondo una condizione 2) clausola where riduce la selezione secondo una condizione where

71 Esempi SQL - Prof Ing G. La Rosa71 Esecuzione di Select (4) 3) clausola group by raggruppa le righe in base a certi valori uguali di certe colonne 3) clausola group by raggruppa le righe in base a certi valori uguali di certe colonne group by

72 Esempi SQL - Prof Ing G. La Rosa72 Esecuzione di Select (5) 4) clausola having impone condizioni sulla scelta delle righe 4) clausola having impone condizioni sulla scelta delle righe having

73 Esempi SQL - Prof Ing G. La Rosa73 Esecuzione di Select (6) 5) clausola select seleziona le colonne 5) clausola select seleziona le colonne select

74 Esempi SQL - Prof Ing G. La Rosa74 Esecuzione di Select (7) 6) clausola order by ordina le righe selezionate 6) clausola order by ordina le righe selezionate select

75 Esempi SQL - Prof Ing G. La Rosa75 Operatori di ricerca Operatori di confronto Operatori di confronto Operatori logici Operatori logici BETWEEN: valore compreso fra… BETWEEN: valore compreso fra… IN : appartenenza ad un insieme IN : appartenenza ad un insieme LIKE: ricerca con metacaratteri LIKE: ricerca con metacaratteri IS : controllo dei campi NULL IS : controllo dei campi NULL

76 Esempi SQL - Prof Ing G. La Rosa76 Operatori di confronto = uguale = uguale < minore < minore > maggiore > maggiore <> diverso <> diverso <= minore o uguale <= minore o uguale >= maggiore o uguale >= maggiore o uguale

77 Esempi SQL - Prof Ing G. La Rosa77 Operatori logici NOT negazione logica NOT negazione logica a NOT a F V V F –Luscita è il negato dellingresso

78 Esempi SQL - Prof Ing G. La Rosa78 Operatori logici (2) AND prodotto logico AND prodotto logico a b a AND b F F F F V F V F F V V V –Luscita è vera se entrambi gli ingressi sono veri

79 Esempi SQL - Prof Ing G. La Rosa79 Operatori logici (3) OR somma logica OR somma logica a b a OR b F F F F V V V F V V V V –Luscita è vera se almeno un ingresso è vero

80 Esempi SQL - Prof Ing G. La Rosa80 Operatore BETWEEN Controlla un intervallo Controlla un intervallo Esercizio: Utilizzando la tabella personale visualizzare l elenco dei dipendenti con cognome, nome e funzione, assunti da febbraio ad agosto 2006

81 Esempi SQL - Prof Ing G. La Rosa81 Risposta SELECT Cognome, Nome, Funzione FROM personale WHERE Assunto BETWEEN 01/02/06 AND 31/08/06

82 Esempi SQL - Prof Ing G. La Rosa82 Operatore IN Controlla lappartenenza ad un insieme Controlla lappartenenza ad un insiemeEsercizio Visualizzare lelenco completo di tutti i dati dei dipendenti residenti nelle province CT, ME, PA, EN Visualizzare lelenco completo di tutti i dati dei dipendenti residenti nelle province CT, ME, PA, EN

83 Esempi SQL - Prof Ing G. La Rosa83 Risposta SELECT * FROM Personale WHERE Prov IN (CT,ME,PA, En);

84 Esempi SQL - Prof Ing G. La Rosa84 Operatore LIKE Permette lutilizzo di caratteri jolly o metacaratteri: Permette lutilizzo di caratteri jolly o metacaratteri: _ (underscore) singolo carattere qualunque % (percento) stringa qualunque LIKE abc% stringhe che iniziano con abc LIKE abc_ stringhe di 4 char che iniziano con abc LIKE %abc% stringhe che contengono abc LIKE %abc stringhe che terminano con abc

85 Esempi SQL - Prof Ing G. La Rosa85 Operatore LIKE (2) Esercizio: Visualizzare lelenco con cognome e filiale dei dipendenti aventi cognome che inizia con Mac

86 Esempi SQL - Prof Ing G. La Rosa86 Risposta SELECT Cognome, Filiale FROM Personale WHERE Cognome LIKE Mac%;

87 Esempi SQL - Prof Ing G. La Rosa87 Operatore IS E utilizzato con NULL oppure con NOT NULL per verificare se un certo campo è o no NULL: E utilizzato con NULL oppure con NOT NULL per verificare se un certo campo è o no NULL: SELECT Cognome, Nome FROM personale WHERE Prov IS NOT NULL elenco dei dipendenti nel cui record è indicata la provincia elenco dei dipendenti nel cui record è indicata la provincia

88 Esempi SQL - Prof Ing G. La Rosa88 Subquery Il comando select permette di inserire un altro comando select allinterno della struttura di un comando select creando interrogazioni nidificate Il comando select permette di inserire un altro comando select allinterno della struttura di un comando select creando interrogazioni nidificate subquery o select interna subquery o select interna

89 Esempi SQL - Prof Ing G. La Rosa89 Subquery (2) La condizione scritta dopo il where confronta il valore di un attributo con il risultato di un altro comando select La condizione scritta dopo il where confronta il valore di un attributo con il risultato di un altro comando select Una subquery può restituire Una subquery può restituire –Un valore singolo –Nessun valore –Un insieme di valori

90 Esempi SQL - Prof Ing G. La Rosa90 Subquery (3) La clausola select di subquery La clausola select di subquery –Può far riferimento a una singola colonna o ad una espressione –Non può contenere distintc –Non può contenere order by –Può avere altre select dentro where e having

91 Esempi SQL - Prof Ing G. La Rosa91 Subquery semplici Dapprima viene valutata la query interna il cui risultato viene utilizzato dalla query esterna Dapprima viene valutata la query interna il cui risultato viene utilizzato dalla query esterna La query interna deve fornire pertanto fornire un risultato che possa essere valutato in termini booleani dalla where esterna La query interna deve fornire pertanto fornire un risultato che possa essere valutato in termini booleani dalla where esterna

92 Esempi SQL - Prof Ing G. La Rosa92 Subquery semplici (2) Elenco nominativo dei dipendenti con StipBase > della media degli stipendi Elenco nominativo dei dipendenti con StipBase > della media degli stipendi SELECT Cognome, Nome From personale Where StipBase > (select avg (Stipbase) From personale); From personale);

93 Esempi SQL - Prof Ing G. La Rosa93 Subquery semplici (3) Esercizio: visualizzare lelenco con cognome, nome e descrizione della filiale in cui operano dei dipendenti aventi Stipendio pari al max per la funzione impiegato. Lelenco va visualizzato ordinato per cognome e nome. Esercizio: visualizzare lelenco con cognome, nome e descrizione della filiale in cui operano dei dipendenti aventi Stipendio pari al max per la funzione impiegato. Lelenco va visualizzato ordinato per cognome e nome.

94 Esempi SQL - Prof Ing G. La Rosa94 Risposta SELECT Cognome, Nome, Descrizione From personale, dipendenza Where Filiale=CodFil And StipBase = (select max(Stipbase) From personale From personale where Funzione=impiegato) Order by Cognome, Nome;

95 Esempi SQL - Prof Ing G. La Rosa95 Subquery con any Il predicato any indica che la subquery può restituire Il predicato any indica che la subquery può restituire –0 –1 –Insieme di valori E che la condizione di ricerca è verificata se il confronto è vero per almeno uno dei valori restituiti E che la condizione di ricerca è verificata se il confronto è vero per almeno uno dei valori restituiti

96 Esempi SQL - Prof Ing G. La Rosa96 Subquery con any (2) –La condizione di ricerca è falsa se la subquery restituisce un insieme vuoto oppure se il confronto è falso per ciascuno dei valori restituiti dalla subquery

97 Esempi SQL - Prof Ing G. La Rosa97 Subquery con any (3) Esercizio: visualizzare lelenco con cognome nome e funzione dei dipendenti non impiegati e aventi Stipbase > di uno qualsiasi di quello degli impiegati Esercizio: visualizzare lelenco con cognome nome e funzione dei dipendenti non impiegati e aventi Stipbase > di uno qualsiasi di quello degli impiegati

98 Esempi SQL - Prof Ing G. La Rosa98 Risposta SELECT Cognome, Nome,Funzione From personale Where Funzione <> impiegato And StipBase > any (select Stipbase From personale From personale where funzione=impiegato);

99 Esempi SQL - Prof Ing G. La Rosa99 Subquery con all Il predicato all indica che la subquery può restituire Il predicato all indica che la subquery può restituire –0 –1 –Insieme di valori E che la condizione di ricerca è verificata se il confronto è vero per tutti i valori restituiti E che la condizione di ricerca è verificata se il confronto è vero per tutti i valori restituiti

100 Esempi SQL - Prof Ing G. La Rosa100 Subquery con all (2) –La condizione di ricerca è falsa se il confronto è falso per almeno uno tra i valori restituiti dalla subquery

101 Esempi SQL - Prof Ing G. La Rosa101 Subquery con all (3) Esercizio: visualizzare lelenco con cognome, nome e funzione dei dipendenti non impiegati aventi Stipbase > a quello di tutti gli impiegati Esercizio: visualizzare lelenco con cognome, nome e funzione dei dipendenti non impiegati aventi Stipbase > a quello di tutti gli impiegati

102 Esempi SQL - Prof Ing G. La Rosa102 Risposta SELECT Cognome, Nome,Funzione From personale Where Funzione <> impiegato And StipBase > all (select Stipbase From personale From personale where Funzione=impiegato);

103 Esempi SQL - Prof Ing G. La Rosa103 Subquery con IN Il predicato IN serve a controllare se il valore di un attributo è compreso fra quelli restituiti dalla subquery effettuata con la select nidificata Il predicato IN serve a controllare se il valore di un attributo è compreso fra quelli restituiti dalla subquery effettuata con la select nidificata E possibile utilizzare NOT IN per ottenere la condizione opposta E possibile utilizzare NOT IN per ottenere la condizione opposta

104 Esempi SQL - Prof Ing G. La Rosa104 Subquery con IN (2) Esercizio: visualizzare lelenco con cognome e nome dei dipendenti che operano nelle filiali con più di 20 dipendenti Esercizio: visualizzare lelenco con cognome e nome dei dipendenti che operano nelle filiali con più di 20 dipendenti

105 Esempi SQL - Prof Ing G. La Rosa105 Risposta SELECT Cognome, Nome From personale Where Filiale IN (select Filiale From personale From personale group by Filiale Having count(*) >20);

106 Esempi SQL - Prof Ing G. La Rosa106 Equivalenze IN – ANY - ALL Si osservi che la condizione Si osservi che la condizione where attributo IN (select…) where attributo IN (select…) Equivale a: where attributo = ANY (select…) Analogamente la condizioneAnalogamente la condizione where attributo NOT IN (select…) where attributo NOT IN (select…) Equivale a: where attributo ALL (select…)

107 Esempi SQL - Prof Ing G. La Rosa107 Subquery con exists Il predicato exists controlla se vengono restituite righe dallesecuzione della subquery Il predicato exists controlla se vengono restituite righe dallesecuzione della subquery La condizione è La condizione è –vera se la select nidificata produce una o più righe –falsa se restituisce un insieme vuoto

108 Esempi SQL - Prof Ing G. La Rosa108 Subquery con exists (2) Nelle subquery con exists le colonne sono irrilevanti pertanto nella subquery si utilizza il carattere * Nelle subquery con exists le colonne sono irrilevanti pertanto nella subquery si utilizza il carattere * E possibile utilizzare la forma negativa NOT EXISTS E possibile utilizzare la forma negativa NOT EXISTS

109 Esempi SQL - Prof Ing G. La Rosa109 Subquery con exists (3) Esercizio: Visualizzare l elenco cognome e nome dei dipendenti se esistono dipendenti di livello 8 Esercizio: Visualizzare l elenco cognome e nome dei dipendenti se esistono dipendenti di livello 8

110 Esempi SQL - Prof Ing G. La Rosa110 Risposta SELECT Cognome, Nome From personale Where exists (select * From personale From personale where livello=8);


Scaricare ppt "Esempi SQL - Prof Ing G. La Rosa1 Elaborazione dati informatici Università degli Studi di Catania Facoltà medicina Corsi di laurea in: Tecnici di Radiologia."

Presentazioni simili


Annunci Google