Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
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
2
Linguaggio SQL Prof Ing Gaetano La Rosa Web: Esempi SQL - Prof Ing G. La Rosa
3
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
4
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
5
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
6
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
7
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
8
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
9
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
10
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
11
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
12
Cancellazione di tabelle e indici: DROP
DROP TABLE personale; DROP INDEX Ipersonale ON personale; Esempi SQL - Prof Ing G. La Rosa
13
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
14
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
15
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
16
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
17
Comandi di interrogazione: SELECT
SELECT [ALL| DISTINCT] Attributi FROM Tabelle [WHERE Condizione]; Esempi SQL - Prof Ing G. La Rosa
18
QUERY su TABELLA studenti
Esempi SQL - Prof Ing G. La Rosa
19
QUERY su TABELLA studenti (2)
SELECT Indirizzo, Telefono FROM Studenti WHERE Nome=‘Teo Verdi’ Esempi SQL - Prof Ing G. La Rosa
20
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
21
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
22
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
23
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
24
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
25
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
26
Capacità del comando SQL SELECT
Selezione Proiezione Tabella 1 Tabella 1 Join Tabella 1 Tabella 2 Esempi SQL - Prof Ing G. La Rosa
27
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
28
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
29
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
30
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
31
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
32
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
33
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
34
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
35
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
36
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
37
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
38
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
39
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
40
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
41
Funzioni di aggregazione
COUNT: conteggio SUM: somma AVG: media MIN: minimo MAX: massimo Esempi SQL - Prof Ing G. La Rosa
42
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
43
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
44
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
45
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
46
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
47
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
48
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
49
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
50
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
51
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
52
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
53
Funzioni di ordinamento e raggruppamento
ORDER BY: criterio di ordinamento GROUP BY: criterio di raggruppamento Esempi SQL - Prof Ing G. La Rosa
54
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
55
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
56
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
57
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
58
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
59
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
60
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
61
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
62
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
63
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
64
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
65
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
66
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
67
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
68
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
69
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
70
Esecuzione di Select (3)
2) clausola where riduce la selezione secondo una condizione where Esempi SQL - Prof Ing G. La Rosa
71
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
72
Esecuzione di Select (5)
4) clausola having impone condizioni sulla scelta delle righe having Esempi SQL - Prof Ing G. La Rosa
73
Esecuzione di Select (6)
5) clausola select seleziona le colonne select Esempi SQL - Prof Ing G. La Rosa
74
Esecuzione di Select (7)
6) clausola order by ordina le righe selezionate select Esempi SQL - Prof Ing G. La Rosa
75
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
76
Operatori di confronto
= uguale < minore > maggiore <> diverso <= minore o uguale >= maggiore o uguale Esempi SQL - Prof Ing G. La Rosa
77
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
78
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
79
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
80
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
81
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
82
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
83
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
84
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
85
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
86
Esempi SQL - Prof Ing G. La Rosa
Risposta SELECT Cognome, Filiale FROM Personale WHERE Cognome LIKE ‘Mac%’; Esempi SQL - Prof Ing G. La Rosa
87
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
88
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
89
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
90
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
91
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
92
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
93
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
94
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
95
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
96
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
97
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
98
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
99
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
100
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
101
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
102
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
103
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
104
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
105
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
106
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
107
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
108
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
109
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
110
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.