Lezione 11
Il trattamento dei dati
database: il linguaggio SQL
prima parte
Proff. Valle –Folgieri
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
1
Linguaggi per database
•Permettono l’accesso ai dati. Vi sono vari tipi di
linguaggi:
• testuali interattivi
• con comandi immersi in un linguaggio ospite
(comandi di interrogazione riportati in linguaggi
come il Pascal, il C, il Cobol, ecc…)
• con comandi immersi in un linguaggio ad hoc e
tool (strumenti) vari
• con interfacce friendly (si può sviluppare anche
senza conoscere un linguaggio)
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
2
1
SQL
• SQL sta per Structured Query Language (linguaggio di
interrogazione strutturato)
• è un linguaggio interattivo, si può trovare immerso in altri
linguaggi (es. Visual Basic), immerso in linguaggi ad hoc (es.
Oracle PL/SQL), o gestito da interfacce friendly (es. Microsoft
Access)
• reso molto noto dalla Oracle Inc., attualmente lo standard
utilizzato da quasi tutti gli RDBMS (Relational DataBase
Management Systems)
• è un linguaggio completo per la gestione di una base
dati.L’SQL include inoltre anche funzionalità di DDL (Data
Description Language) e di DML (Data Management
Language).
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
3
DDL e DML
•Stanno per:
• DDL (data definition language): funzionalità per
la definizione di schemi (logici, esterni e fisici – tre
livelli ANSI/SPARC) e altre operazioni generali
• DML (data manipulation language): funzionalità
per l’interrogazione e l’aggiornamento di dati
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
4
2
I tipi di dati in SQL
•Ogni linguaggio definisce i dati (e la sintassi) che può gestire. I
tipi di dati in SQL possono essere:
• stringhe di caratteri
• numeri
• tipi data/ora
• costanti (numeriche, stringa e data/ora)
•Note sulla nomenclatura: anche se nelle istruzioni del
linguaggio talvolta alcune parole si scrivono in maiuscolo, per
evidenziare le parole chiave, SQL non fa distinzione tra
maiuscole e minuscole (in gergo si dice che è “case
insensitive”.
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
5
Operatori
•Per poter effettuare operazioni e confronti logici
e aritmetici, vengono utilizzati:
• Operatori aritmetici
• Operatori di confronto
• Operatori logici
•Ne abbiamo già visto qualcuno negli argomenti
già trattati nel corso, vediamo nel dettaglio quelli
utilizzati da SQL:
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
6
3
Operatori aritmetici
Operatori/oper
andi
Descrizione
- < oper>
Effettua l’inversione dell’operando (da negativo a positivo
e viceversa)
Somma tra due operandi.
< oper1> +
< oper2>
< oper1> < oper2>
< oper1> *
< oper2>
< oper1> /
< oper2>
< oper1> %
< oper2>
Lez11
Sottrazione tra due operandi.
Moltiplicazione di due operandi.
Divisione tra due operandi
Modulo, ovvero l’operazione fornisce il resto della
divisione tra il primo e il secondo operando.
Trattamento dati. Database: il linguaggio SQL-prima parte
7
Operatori aritmetici
Operatori/oper
andi
- < oper>
< oper1> +
< oper2>
< oper1> < oper2>
< oper1> *
< oper2>
< oper1> /
< oper2>
< oper1> %
< oper2>
Lez11
Esempio (siano A=10 e B=2 due variabili, ovvero due
“contenitori” di valori)
-A
fornisce il risultato -10
A+B
fornisce il risultato 12
A-B
fornisce il risultato 8
A*B
fornisce il risultato 20
A/B
fornisce il risultato 5
A % B fornisce il risultato 0 (il resto della divisione tra i
due operandi)
Trattamento dati. Database: il linguaggio SQL-prima parte
8
4
Operatori di confronto
Operatori/operandi
Descrizione
< oper1> =
< oper2>
Vero quando gli operandi si equivalgono.
< oper1> <>
< oper2>
< oper1> <
< oper2>
Vero quando gli operandi sono differenti.
< oper1> >
< oper2>
Vero quando il primo operando è maggiore del secondo.
< oper1> <=
< oper2>
Vero quando il primo operando è minore o uguale al
secondo.
< oper1> >=
< oper2>
Vero quando il primo operando è maggiore o uguale al
secondo.
Vero quando il primo operando è minore del secondo.
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
9
Operatori di confronto
Operatori/operandi
Esempio (siano A=10 e B=2 due variabili, ovvero due
“contenitori” di valori)
< oper1> =
< oper2>
A=B
risultato: Falso
< oper1> <>
< oper2>
< oper1> <
< oper2>
A<>B
risultato: Vero
A<B
risultato: Falso
< oper1> >
< oper2>
A>B
risultato: Vero
< oper1> <=
< oper2>
A<=B
risultato: Falso
< oper1> >=
< oper2>
A>=B
risultato: Vero
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
10
5
Operatori di confronto
i confronti si possono fare anche tra valori alfanumerici (in questo caso il minore
ha significato di ordine alfabetico), sebbene, vedremo, per tali variabili vi sono
operatori specifici.
Operatori/operandi
Esempio (siano A=mela e B=pera due variabili, ovvero
due “contenitori” di valori)
A=B
risultato: Falso
< oper1> <> < oper2> A<>B
risultato: Vero
< oper1> = < oper2>
< oper1> < < oper2>
A<B
risultato: Vero (la “m” viene prima della “p”)
< oper1> > < oper2>
A>B
risultato: Falso
< oper1> <= < oper2> A<=B
risultato: Vero
< oper1> >= < oper2> A>=B
risultato: Falso
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
11
Operatori logici
Operatori/operandi
Descrizione
NOT <oper>
Inverte il risultato logico dell'operando.
< oper1> AND
< oper2>
Vero se tutti e due operandi restituiscono il
valore Vero.
< oper1> OR
< oper2>
Vero se almeno uno degli operandi restituisce il
valore Vero.
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
12
6
Operatori logici
Operatori/operandi
Esempio (siano A=10 e B=2 due variabili, ovvero due
“contenitori” di valori)
NOT <oper>
NOT A
< oper1> AND
< oper2>
(A<11) AND (B<3) Risultato: Vero
In questo caso gli operandi sono solitamente
operazioni di confronto
< oper1> OR
< oper2>
(A<11) AND (B>3) Risultato: Vero
In questo caso gli operandi sono solitamente
operazioni di confronto
Lez11
Risultato: -10
Trattamento dati. Database: il linguaggio SQL-prima parte
13
Operatori logici
anche in questo caso, talvolta si possono usare variabili alfanumeriche
anche se, vedremo, per tali variabili vi sono operatori specifici.
Operatori/operandi
Esempio (siano A=mela e B=pera due variabili, ovvero
due “contenitori” di valori)
NOT <oper>
Per le stringhe non ha senso!
< oper1> AND
< oper2>
(A<zucca) AND (B<uva)
Risultato: Vero
In questo caso gli operandi sono solitamente
operazioni di confronto
< oper1> OR
< oper2>
(A<zucca) AND (B>uva)
Risultato: Vero
In questo caso gli operandi sono solitamente
operazioni di confronto
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
14
7
Operatori di confronto per le stringhe
Per le stringhe possono essere usati operatori di confronto specifici:
Espressioni
Descrizione
<stringa1> IS LIKE
< stringa2>
< stringa1> IS NOT
LIKE < stringa2>
Restituisce Vero quando la stringa1
corrisponde alla stringa2
Restituisce Vero quando la stringa1 non
corrisponde alla stringa2
_
Rappresenta un carattere singolo
qualsiasi.
Rappresenta una sequenza indeterminata
di caratteri.
%
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
15
Operatori di confronto per le stringhe
Per le stringhe possono essere usati operatori di confronto specifici:
Espressioni
Esempio (abbiamo i soliti A=mela e B= pera)
<stringa1> IS LIKE
< stringa2>
< stringa1> IS NOT
LIKE < stringa2>
A IS LIKE B restituisce FALSO
_
Rappresenta un carattere singolo
qualsiasi.
Rappresenta una sequenza indeterminata
di caratteri.
%
Lez11
A IS NOT LIKE B restituisce VERO
Trattamento dati. Database: il linguaggio SQL-prima parte
16
8
Operatori per il controllo delle espressioni
Operatori
Descrizione
<espressione>
IS NULL
Restituisce Vero se l'espressione genera un
risultato indeterminato.
<espressione>
IS NOT NULL
Restituisce Vero se l'espressione non genera un
risultato indeterminato.
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
17
Operatori per il controllo delle espressioni
Operatori
Esempio (siano A= 10, B=2 e Stringa1=mela,
Stringa2=pera)
<espressione>
IS NULL
(A+B) IS NULL restituisce FALSO
<espressione>
IS NOT NULL
Lez11
Con le stringhe ha senso se, per esempio, ho un
programma che mette una stringa trovata in una variabile
o non vi mette nulla se non trovo quel che cerco.
(B/0) B diviso zero genera un risultato indeterminato,
quindi il risultato è FALSO
(A/B) restituisce il valore VERO (il risultato non è
indeterminato
Per le stringhe vale il discorso fatto sopra
Trattamento dati. Database: il linguaggio SQL-prima parte
18
9
Operatori “di appartenenza”
Alcuni operatori permettono di verificare se un valore appartiene o
meno ad un intervallo o a un elenco di valori:
Operatori/operandi
Descrizione
<oper1> IN (<elenco>)
Vero se il primo operando è presente nell'elenco.
< oper1> NOT IN
(<elenco>)
Vero se il primo operando non è presente
nell'elenco.
< oper1> BETWEEN <
oper2> AND < oper3>
Vero se il primo operando è compreso
nell’intervallo indicato dal secondo e dal terzo.
< oper1> NOT
BETWEEN < oper2>
AND < oper3>
Vero se il primo operando non è compreso
nell'intervallo indicato.
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
19
Operatori “di appartenenza”
Alcuni operatori permettono di verificare se un valore appartiene o
meno ad un intervallo o a un elenco di valori:
Operatori/operandi
Esempio (sia elenco l’insieme dei valori: mela,
pera, arancia e A= mela, B= pera, C= pesca)
<oper1> IN (<elenco>)
A IN elenco
VERO, perché la parola mela è
presente nell’insieme elenco
< oper1> NOT IN
(<elenco>)
C NOT IN elenco
VERO, perché la parola
pesca non è presente nell’insieme elenco
< oper1> BETWEEN <
oper2> AND < oper3>
B between A and C
VERO, perché la parola
PERA è compresa (ordine alfabetico) tra le parole
MELA e PESCA
< oper1> NOT
BETWEEN < oper2>
AND < oper3>
A between B and C
VERO, perché la parola
MELA non è compresa (ordine alfabetico) tra le
parole PERA e PESCA
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
20
10
Operatori “di appartenenza”
Il between si presta ovviamente molto bene all’utilizzo con variabili
numeriche
Operatori/operandi
Esempio (sia A= 10, B= 2, C= 7)
< oper1> BETWEEN <
oper2> AND < oper3>
C between B and A VERO, perché il 7
si colloca tra 2 e 10
< oper1> NOT
BETWEEN < oper2>
AND < oper3>
A not between B and C
VERO,
perché il 10 non si colloca tra 2 e 7
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
21
UTILITA’ DEGLI OPERATORI
Gli operatori servono ad utilizzare al meglio le sintassi di SQL per
manipolare i dati di un database.
Infatti, una volta “immagazzinati” (in Inglese “stored”) i dati,
occorre potervi effettuare varie operazioni, ad esempio di confronto,
logiche, ma anche di ricerca (search) e di estrazione dei dati
(retreiving dei dati). Occorre cioè effettuare delle query, cioè delle
“interrogazioni” per estrarre i dati che cerchiamo per poi poterli
elaborare.
Combinando tra loro gli operatori si possono formulare espressioni
complesse per la ricerca, il mantenimento, l’inserimento e in
generale il trattamento dei dati immagazzinati.
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
22
11
I 5 verbi di SQL
Per poter formulare operazioni di mantenimento dei dati in un
database, occorre disporre di istruzioni che lo consentano.
In SQL i comandi che consentono tali operazioni sono:
CREATE
INSERT
DELETE
SELECT
UPDATE
Cui si aggiungono funzioni e procedure standard messi a
disposizione del linguaggio.
Nella prossima lezione cominceremo ad analizzare le sintasssi dei
comandi appena elencati e, soprattutto, l’utilità per l’acesso alle basi
di dati.
Lez11
Trattamento dati. Database: il linguaggio SQL-prima parte
23
12