Elaborazione dati informatici Università degli Studi di Catania Facoltà medicina Corsi di laurea in: Tecnici di Radiologia Medica per Immagini Radioterapia Esempi SQL - Prof Ing G. La Rosa
Linguaggio SQL Prof Ing Gaetano La Rosa email: info@glrstudio.com Web: www.glrstudio.com Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa SQL: caratteri SQL utilizza i caratteri alfabetici; Cifre decimali; Operatori aritmetici (+ - * /); Operatori di confronto (< >); Caratteri di sintassi (, ;); Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa SQL: identificatori Gli identificatori sono i nomi di tabelle o di attributi Sono costituiti da sequenze di caratteri di lunghezza non superiore a 18 Devono iniziare con una lettera e possono contenere il carattere ‘_’ Per separare il nome tabella dal nome attributo si utilizza il carattere ‘.’ Nometabella.nomeattributo Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa SQL: tipi di dati Nella dichiarazione della struttura di una tabella occorre specificare il tipo di dati per ogni attributo 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Costanti e operatori 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) 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) Esempi SQL - Prof Ing G. La Rosa
Comandi DDL: Data Definition Language 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 l’uso di comandi specifici. Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Comando CREATE TABLE Utilizzato per la creazione di tabelle Va seguito dal nome della tabella e dall’elenco degli attributi: CREATE TABLE personale (Matricola char(5), Cognome char(30), Nome char(30), CodFis char(16) not null, Assunto date, Filiale smallint, Funzione char(15), Livello smallint, StipBase integer, Via char(25), Cap char(5), Citta char(20), Prov char(2) ); Esempi SQL - Prof Ing G. La Rosa
Modifica di una tabella creata ALTER TABLE: permette di modificare una tabella con aggiunta (ADD) o rimozione (DROP) di attributi: ALTER TABLE personale ADD Nascita date; ALTER TABLE personale DROP StipBase; Esempi SQL - Prof Ing G. La Rosa
Creazione di indici su tabelle CREATE INDEX: permette la creazione di un nuovo indice su una tabella esistente su specifici attributi: CREATE INDEX Ipersonale ON personale (cognome, Nome); Esempi SQL - Prof Ing G. La Rosa
Cancellazione di tabelle e indici: DROP DROP TABLE personale; DROP INDEX Ipersonale ON personale; Esempi SQL - Prof Ing G. La Rosa
Comandi DML: Data Manipulation Language 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 all’utente grazie all’utilizzo di maschere e interfacce visuali Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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’); Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Comandi DML: UPDATE UPDATE personale SET Livello=6, SET Stipbase=1260, WHERE matricola=‘CS212’; SET Stipbase=Stipbase*1.05, WHERE livello >5; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Comandi DML: DELETE DELETE FROM personale WHERE Matricola=‘CS102’; WHERE Stipbase < 500; Esempi SQL - Prof Ing G. La Rosa
Comandi di interrogazione: SELECT SELECT [ALL| DISTINCT] Attributi FROM Tabelle [WHERE Condizione]; Esempi SQL - Prof Ing G. La Rosa
QUERY su TABELLA studenti Esempi SQL - Prof Ing G. La Rosa
QUERY su TABELLA studenti (2) SELECT Indirizzo, Telefono FROM Studenti WHERE Nome=‘Teo Verdi’ Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposte 1) SELECT Cognome, Nome, CodFis FROM personale WHERE Funzione=‘impiegato’; 2) SELECT * WHERE Prov=‘MI’; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Clausola distinct SELECT Funzione FROM personale; produce l’elenco di tutte le professioni dei dipendenti ripetendo la stessa professione in righe diverse quanti sono i dipendenti che svolgono quella funzione SELECT DISTINCT Funzione produce l’elenco di tutte le professioni dei dipendenti specificando una sola volta le singole funzioni presenti Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Clausola AS La clausola AS serve per assegnare l’intestazione 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 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) Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposte 1 SELECT DISTINCT Prov AS Provincia FROM personale; 2 SELECT Cognome, Nome, Stipbase AS Attuale, StipBase*1.05 AS Nuovo FROM personale; Esempi SQL - Prof Ing G. La Rosa
Query parametriche (MSAccess) SELECT Cognome, Nome FROM personale WHERE Funzione =‘impiegato’; Query fissa su attributo Funzione= ‘impiegato’ WHERE Funzione =[quale funzione?]; Query parametrica su attributo Funzione Il sistema chiederà quale funzione? Esempi SQL - Prof Ing G. La Rosa
Capacità del comando SQL SELECT Selezione Proiezione Tabella 1 Tabella 1 Join Tabella 1 Tabella 2 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Selezione Selezione consente di ricavare da una relazione un’altra relazione contenente solo le righe che soddisfano una certa condizione Si realizza con la clausola WHERE SELECT * FROM personale WHERE Funzione = ‘dirigente’; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Proiezione Proiezione consente di ricavare da una relazione un’altra relazione contenente solo alcune colonne della relazione di partenza Si realizza indicando accanto a SELECT gli attributi richiesti SELECT Cognome, Nome FROM personale; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Congiunzione - Join Congiunzione consente la congiunzione di più tabelle attraverso degli attributi comuni CREATE TABLE personale (Matricola char(5) not null, Cognome char(30), Nome char(30), CodFis char(16) not null, Assunto date, Filiale smallint, Funzione char(15), Livello smallint, StipBase integer, Via char(25), Cap char(5), Citta char(20), Prov char(2) ); CREATE TABLE dipendenza (CodFil smallint not null Descrizione char(20) Indirizzo char(25) ); Fra dipendenza e personale esiste un’associazione 1n pertanto la chiave di dipendenza (CodFil) viene posta come chiave esterna in personale (Filiale) Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Congiunzione – Join (2) 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 filiale nella quale lavorano Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT * FROM personale, dipendenza WHERE Filiale=CodFil; oppure SELECT * FROM personale, dipendenza WHERE personale.Filiale = dipendenza.CodFil; oppure SELECT * FROM personale INNER JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; Esempi SQL - Prof Ing G. La Rosa
Congiunzione – Left/Right Join La forma SELECT * FROM personale INNER JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; Permette di selezionare le righe delle due tabelle con l’attributo 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 Esempi SQL - Prof Ing G. La Rosa
Congiunzione – Left Join SELECT * FROM personale LEFT JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; Permette di selezionare le righe delle due tabelle con l’attributo comune e gli eventuali campi della tabella personale (tabella di sinistra) non aventi corrispondenze nella tabella di destra. Esempi SQL - Prof Ing G. La Rosa
Congiunzione –Right Join SELECT * FROM personale RIGHT JOIN dipendenza ON personale.Filiale = dipendenza.CodFil; Permette di selezionare le righe delle due tabelle con l’attributo comune e gli eventuali campi della tabella dipendenza (tabella di destra) non aventi corrispondenze nella tabella di sinistra. Esempi SQL - Prof Ing G. La Rosa
Congiunzione – Self-Join La congiunzione è detta di self-Join quando opera su una medesima tabella 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 dipendente, saranno contenute sulle medesima tabella personale. Esempi SQL - Prof Ing G. La Rosa
Congiunzione – Self-Join (2) CREATE TABLE personale (Matricola char(5), Cognome char(30), … Assunto date, Dirigente char(5), Filiale smallint, Prov char(2) ); Per effettuare una self-join si utilizzano gli alias sui nomi delle tabelle utilizzando la clausola AS. Esempio: Utilizzando il self join e la tabella personale con il campo dirigente, visualizzare l’elenco dei dipendenti con i dati cognome e nome del dipendente e indicazione del cognome del relativo dirigente Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Tab1.Cognome, Tab1.Nome, Tab2.Cognome FROM personale AS Tab1, personale AS Tab2 WHERE Tab1.Dirigente = Tab2.Matricola ; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatori logici 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: Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome, Descrizione, indirizzo FROM personale, dipendenza WHERE Funzione=‘impiegato’ AND Filiale=CodFil; …. O per maggiore chiarezza: Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT personale.Cognome, personale.Nome, dipendenza.Descrizione, dipendenza.indirizzo FROM personale, dipendenza WHERE personale.Funzione=‘impiegato’ AND personale.Filiale=dipendenza.CodFil; Esempi SQL - Prof Ing G. La Rosa
Funzioni di aggregazione COUNT: conteggio SUM: somma AVG: media MIN: minimo MAX: massimo Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Funzione COUNT Conta le righe presenti in una tabella Sintassi: COUNT(arg) Arg= * tutte le righe Arg= attributo tutte le righe con att !=NULL COUNT permette di determinare la cardinalità di una relazione Può utilizzarsi con clausola WHERE Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta 1 SELECT COUNT (*) FROM personale; 2 SELECT COUNT(livello) 3 SELECT COUNT(*) FROM personale WHERE Prov=‘CT’; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Funzione COUNT (3) Esercizio Utilizzando la clausola DISTINCT visualizzare il numero di differenti livelli che risiedono nella provincia di CT. Intestare l’uscita con livelli. Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT COUNT (DISTINCT livello) AS livelli FROM personale WHERE Prov=‘CT; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Funzione SUM Restituisce la somma dei valori di una colonna di tipo numerico Eventuali campi NULL vanno considerati come 0 Può utilizzarsi con clausola WHERE e DISTINCT Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Funzione SUM (2) Esercizio Utilizzando l’archivio personale visualizzare la Somma degli stipendi base (stipbase) appartenenti al livello 5 La somma degli stipendi base del livello 5 qualora si effettui un aumento del 10%, intestando la colonna come Previsione Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta 1 SELECT SUM (StipBase) FROM personale WHERE Livello=5; 2 SELECT SUM (StipBase*1,1) AS Previsione FROM personale WHERE Livello = 5; Esempi SQL - Prof Ing G. La Rosa
Funzione AVG (average) Restituisce la media aritmetica dei valori di una colonna di tipo numerico Eventuali campi NULL non influiscono nel computo della media Può utilizzarsi con clausola WHERE e DISTINCT SELECT AVG (StipBase) FROM personale WHERE Funzione=‘Impiegato’; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Funzioni MAX e MIN Restituiscono rispettivamente il max e il min tra i valori di una colonna Operano anche su attributi sia numerici che di tipo carattere Ignorano i campi NULL L’argomento di MIN e MAX può essere un’espressione numerica Può utilizzarsi con clausola WHERE Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Funzioni MAX e MIN (2) SELECT MIN(StipBase), MAX (StipBase) FROM personale; SELECT MIN (Cognome), MAX (Cognome) Esempi SQL - Prof Ing G. La Rosa
Funzioni di ordinamento e raggruppamento ORDER BY: criterio di ordinamento GROUP BY: criterio di raggruppamento Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa FUNZIONE ORDER BY Permette di ordinare il risultato di una query secondo i valori contenuti in una o più colonne Opera sia su valori numerici che carattere Può essere ascendente ASC (default) o discendente DESC Il valore NULL sarà posta all’inizio delle sequenze crescenti, alla fine in quelle decrescenti Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa FUNZIONE ORDER BY (2) Esercizio Utilizzando la tabella personale visualizzare Elenco alfabetico dei dipendenti con cognome, nome, data_nascita e CF ordinato per cognome e, in caso di cognomi uguali, per nome Elenco dei dipendenti con cognome e stipendio per stipendio decrescente e, a parità di stipendio, per cognome crescente Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome, CodFisc,Nascita FROM personale ORDER BY Cognome, Nome; SELECT Cognome, StipBase FROM personale ORDER BY StipBase DESC, Cognome; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa FUNZIONE GROUP BY Permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate (statistiche) Produce una riga per ogni raggruppamento Se utilizzata con funzioni di aggregazione produce un valore di raggruppamento per ciascuna riga 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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) Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Funzione, SUM (StipBase), COUNT (*) FROM personale GROUP BY Funzione; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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) Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Livello, COUNT (Livello) AS Conteggio FROM personale WHERE Funzione=‘impiegato’ GROUP BY Livello; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Clausola HAVING 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Clausola HAVING (2) Esercizio: Visualizzare l’elenco 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) Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Funzione , AVG (StipBase) FROM personale GROUP BY Funzione HAVING COUNT(*) >1; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Clausola HAVING (3) Esercizio: utilizzando la tabella personale visualizzare l’elenco delle filiali con l’indicazione del numero dei dipendenti con qualifica impiegato, intestato come conteggio. Omettere le filiali ove questo numero è <= 10 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Filiale, COUNT (Filiale) AS Conteggio FROM personale WHERE Funzione=‘impiegato’ GROUP BY Filiale HAVING COUNT(*) >10; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Clausola HAVING (4) 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Riepilogo di Select Select [all/distinct] * | lista_campi From tabella|tabelle [where condizione] [Group by campo[,campo..]] [having condizione] [order by campo [asc|desc]] Esempi SQL - Prof Ing G. La Rosa
Esecuzione di Select (2) L’esecuzione del comando select avviene secondo il seguente ordine di clausole: 1) clausola from definisce la tabella da cui accedere ai dati tab1 from tab1 tab3 tab2 database Esempi SQL - Prof Ing G. La Rosa
Esecuzione di Select (3) 2) clausola where riduce la selezione secondo una condizione where Esempi SQL - Prof Ing G. La Rosa
Esecuzione di Select (4) 3) clausola group by raggruppa le righe in base a certi valori uguali di certe colonne group by Esempi SQL - Prof Ing G. La Rosa
Esecuzione di Select (5) 4) clausola having impone condizioni sulla scelta delle righe having Esempi SQL - Prof Ing G. La Rosa
Esecuzione di Select (6) 5) clausola select seleziona le colonne select Esempi SQL - Prof Ing G. La Rosa
Esecuzione di Select (7) 6) clausola order by ordina le righe selezionate select Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatori di ricerca Operatori di confronto Operatori logici BETWEEN: valore compreso fra… IN : appartenenza ad un insieme LIKE: ricerca con metacaratteri IS : controllo dei campi NULL Esempi SQL - Prof Ing G. La Rosa
Operatori di confronto = uguale < minore > maggiore <> diverso <= minore o uguale >= maggiore o uguale Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatori logici NOT negazione logica a NOT a F V V F L’uscita è il negato dell’ingresso Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatori logici (2) AND prodotto logico a b a AND b F F F F V F V F F V V V L’uscita è vera se entrambi gli ingressi sono veri Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatori logici (3) OR somma logica a b a OR b F F F F V V V F V V V V L’uscita è vera se almeno un ingresso è vero Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatore BETWEEN Controlla un intervallo Esercizio: Utilizzando la tabella personale visualizzare l’ elenco dei dipendenti con cognome , nome e funzione, assunti da febbraio ad agosto 2006 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome, Funzione FROM personale WHERE Assunto BETWEEN 01/02/06 AND 31/08/06 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatore IN Controlla l’appartenenza ad un insieme Esercizio Visualizzare l’elenco completo di tutti i dati dei dipendenti residenti nelle province CT, ME, PA, EN Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT * FROM Personale WHERE Prov IN (‘CT’,’ME’,’PA’, ‘En’); Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatore LIKE Permette l’utilizzo 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatore LIKE (2) Esercizio: Visualizzare l’elenco con cognome e filiale dei dipendenti aventi cognome che inizia con ‘Mac’ Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Filiale FROM Personale WHERE Cognome LIKE ‘Mac%’; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Operatore IS 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery Il comando select permette di inserire un altro comando select all’interno della struttura di un comando select creando interrogazioni nidificate subquery o select interna Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery (2) La condizione scritta dopo il where confronta il valore di un attributo con il risultato di un altro comando select Una subquery può restituire Un valore singolo Nessun valore Un insieme di valori Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery (3) 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery semplici 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery semplici (2) Elenco nominativo dei dipendenti con StipBase > della media degli stipendi SELECT Cognome, Nome From personale Where StipBase > (select avg (Stipbase) From personale); Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery semplici (3) Esercizio: visualizzare l’elenco con cognome, nome e descrizione della filiale in cui operano dei dipendenti aventi Stipendio pari al max per la funzione impiegato. L’elenco va visualizzato ordinato per cognome e nome. Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome, Descrizione From personale, dipendenza Where Filiale=CodFil And StipBase = (select max(Stipbase) From personale where Funzione=’impiegato’) Order by Cognome, Nome; Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con any Il predicato any indica che la subquery può restituire 1 Insieme di valori E che la condizione di ricerca è verificata se il confronto è vero per almeno uno dei valori restituiti Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con any (3) Esercizio: visualizzare l’elenco con cognome nome e funzione dei dipendenti non impiegati e aventi Stipbase > di uno qualsiasi di quello degli impiegati Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome,Funzione From personale Where Funzione <> ‘impiegato’ And StipBase > any (select Stipbase where funzione=‘impiegato’); Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con all Il predicato all indica che la subquery può restituire 1 Insieme di valori E che la condizione di ricerca è verificata se il confronto è vero per tutti i valori restituiti Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con all (2) La condizione di ricerca è falsa se il confronto è falso per almeno uno tra i valori restituiti dalla subquery Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con all (3) Esercizio: visualizzare l’elenco con cognome, nome e funzione dei dipendenti non impiegati aventi Stipbase > a quello di tutti gli impiegati Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome,Funzione From personale Where Funzione <> ‘impiegato’ And StipBase > all (select Stipbase where Funzione=‘impiegato’); Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa 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 E’ possibile utilizzare NOT IN per ottenere la condizione opposta Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con IN (2) Esercizio: visualizzare l’elenco con cognome e nome dei dipendenti che operano nelle filiali con più di 20 dipendenti Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome From personale Where Filiale IN (select Filiale group by Filiale Having count(*) >20); Esempi SQL - Prof Ing G. La Rosa
Equivalenze IN – ANY - ALL Si osservi che la condizione where attributo IN (select…) Equivale a: where attributo = ANY (select…) Analogamente la condizione where attributo NOT IN (select…) Equivale a: where attributo < > ALL (select…) Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con exists Il predicato exists controlla se vengono restituite righe dall’esecuzione della subquery La condizione è vera se la select nidificata produce una o più righe falsa se restituisce un insieme vuoto Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con exists (2) Nelle subquery con exists le colonne sono irrilevanti pertanto nella subquery si utilizza il carattere * E’ possibile utilizzare la forma negativa NOT EXISTS Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Subquery con exists (3) Esercizio: Visualizzare l’ elenco cognome e nome dei dipendenti se esistono dipendenti di livello 8 Esempi SQL - Prof Ing G. La Rosa
Esempi SQL - Prof Ing G. La Rosa Risposta SELECT Cognome, Nome From personale Where exists (select * where livello=8); Esempi SQL - Prof Ing G. La Rosa