IL LINGUAGGIO SQL
Structured Query Language",
Contiene sia il DDL sia il DML, quindi consente di:
 Definire e creare il database
 Effettuare l’inserimento, la cancellazione, l’aggiornamento
dei record di un archivio
 Interrogare il database
Ne esistono varie versioni
 Le interrogazioni con SQL sono un’estensione di quelle che
si possono realizzare con sequenze di operazioni
relazionali (si possono effettuare calcoli, raggruppamenti e
ordinamenti)
2
Identificatori
Nomi di tabelle e di attributi costituiti da sequenze di max 18
caratteri. Possono contenere il carattere “_” nel caso di
nomi composti.
Il nome di un attributo è identificato con la notazione:
NomeTabella.NomeAttributo
Il nome della tabella può essere omesso se non ci sono
ambiguità nell’identificazione dell’attributo.
Nella dichiarazione della struttura della tabella occorre
specificare il tipo dei dati scelto per gli attributi.
3
Tipi di dati standard
BOOLEAN
valore logico
True, False
CHARACTER(N)
Stringa di lunghezza n
N da 1 a 15000
Date
MM/GG/AA
Time
HH:MM
INTEGER(p)
p: max numero di cifre
p da 1 a 45
SMALLINT
16 bit
p =5
INTEGER
32 bit
p =10
DECIMAL(p,s)
p da 1 a 45
s da 0 a p
REAL
Mantissa di precisione 7
FLOAT o DOUBLE
PRECISION
Mantissa di precisione
15
FLOAT(p)
Mantissa di precisione p p da 1 a 45
4
Considerazioni
 Le diverse versioni del linguaggio SQL differiscono dallo
standard sia nel tipo dei dati sia nella sintassi delle
istruzioni: verificare sempre nel manuale per l’utente o
nell’help in linea.
 Le costanti sono delimitate dai caratteri ‘ o “. Il delimitatore
standard è l’apice.
 Gli attributi con valore non disponibile o non definito
assumono il valore Null. Null non è mai uguale a nessun
altro valore: è diverso da 0 per i dati numerici e dalla
stringa vuota per i dati alfanumerici.
 Le costanti numeriche possono avere o non avere il segno.
Il separatore decimale è il punto.
5
Le operazioni relazionali
Le operazioni relazionali consentono di effettuare le
interrogazioni alla base di dati estraendo da una tabella
una sottotabella, oppure combinando tra loro più tabelle e
generando così nuove relazioni
Operatori dell’algebra relazionale:
 Unione, intersezione, differenza
 Selezione
 Proiezione
 join (join naturale, prodotto cartesiano, theta-join)
6
Unione
7
Intersezione
8
Differenza
9
Selezione e proiezione
10
Selezione
 produce un risultato che
 ha lo stesso schema dell'operando
 contiene un sottoinsieme delle ennuple dell'operando
 Contiene solo le ennuple che soddisfano la condizione
indicata
Grado: la relazione ottenuta ha lo stesso grado (le stesse
colonne) di quella di partenza
11
Esempio
Impiegati
che
guadagnano
più di 50 e
lavorano a
Milano
SELStipendio > 50 AND Filiale = 'Milano' (Impiegati)
12
Proiezione
 produce un risultato che
 ha parte degli attributi dell'operando
 contiene ennuple cui contribuiscono tutte le ennuple
dell'operando
 Semantica: il risultato contiene le ennuple ottenute da
tutte le ennuple dell'operando ristrette agli attributi nella
lista
13
Le interrogazioni in SQL
Il comando SELECT consente di estrarre dal database le
informazioni desiderate
La struttura base del comando è:
SELECT Colonne
FROM Tabelle
WHERE Condizioni;
14
Esempi
SELECT Cognome, Nome, Citta
FROM Impiegato
WHERE Dipart=‘medicina’;
SELECT Cognome, Nome, Citta
FROM Impiegato
WHERE Dipart=‘medicina’ AND Citta=‘Torino’;
SELECT *
FROM Impiegato
WHERE Citta=‘Torino’;
15
Predicati ALL e DISTINCT
SELECT ALL *
FROM Impiegato
WHERE Citta=‘Torino’;
 Trova tutte le righe che soddisfano alla condizione (si può
omettere, ALL è un predicato di default)
SELECT DISTINCT Citta
FROM Impiegato;
 Produce l’elenco di tutte le città senza duplicati
16
Abbreviazioni
17
Clausola DISTINCT
18
Clausola AS
19
Selezione senza proiezione
 Nome,età, reddito delle persone con meno di 30 anni
20
Condizione LIKE
 Persone il cui nome inizia con A e hanno d come
terza lettera
21
Gestione dei valori nulli
 Impiegati la cui età è maggiore di 40 oppure non è
specificata
22