1. SISTEMI INFORMATIVI PER LA
GESTIONE DELL’AZIENDA
dott. ing. Francesco Guerra
francesco.guerra@unimore.it
2. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Introduzione al linguaggio SQL
dott. ing. Francesco Guerra 2
2 DB
3. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL
SQL e’ il linguaggio di riferimento per le basi di dati
relazionali.
Il linguaggio SQL contiene al suo interno le funzionalità di:
DDL (Data Definition Language): insieme di comandi per la
definizione dello schema di una base di dati relazionale
DML (Data Manipulation language): insieme di comandi per la
modifica e l’interrogazione dell’istanza di una base di dati
DCL (Data Control Language): insieme di comandi per la
gestione degli utenti e dei privilegi di accesso.
dott. ing. Francesco Guerra 3
2 DB
4. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: tipi di dato
Il linguaggio SQL mette a disposizione 6 famiglie di domini
elementari:
Caratteri
Bit
Tipi numerici esatti
Tipi numerici approssimati
Data e ora
Intervalli temporali
Nuove versioni dello standard (SQL:1999) hanno introdotto
nuovi domini:
Boolean, BLOB, CLOB
dott. ing. Francesco Guerra 4
2 DB
5. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: definizione di tabella
Una tabella e’ costituita da una collezione di attributi e da
un insieme (eventualmente) vuoto di attributi:
create table NomeTabella
(NomeAttributo Dominio [Valore Default] [Vincoli]
{, NomeAttributo Dominio [Valore Default] [Vincoli]}
Altri Vincoli
)
Vincoli intrarelazionali: check, not null, unique, primary key
Vincoli interrelazionali: foreign key
dott. ing. Francesco Guerra 5
2 DB
6. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: interrogazioni
SQL esprime le interrogazioni in modo dichiarativo, ovvero
viene specificato l’obiettivo dell’interrogazione e non il
modo in cui ottenerlo.
L’interrogazione viene passata all’ottimizzatore, un
componente del DBMS che analizza l’interrogazione e
formula una interrogazione nel linguaggio procedurale
interno utilizzato dal DBMS (il linguaggio procedurale
specifica i passi necessari per ottenere il risultato).
In generale, esistono diversi modi per esprimere la stessa
interrogazione.
dott. ing. Francesco Guerra 6
2 DB
7. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: interrogazioni (2)
Sintassi per l’interrogazione:
Select <lista select>
From <lista from>
[Where <condizione>]
[Order by <lista order>]
Clausola select: specifica gli elementi dello schema della
tabella risultato
Clausola from: indica le tabelle sulle quali effettuare
l’interrogazione
Clausola where: specifica le condizioni sulle quali verificare
l’interrogazione
Clausola order by: specifica un’ordinamento del risultato
dott. ing. Francesco Guerra 7
2 DB
8. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: clausola select
E’ possibile selezionare tutti gli attributi attraverso un unico
simbolo *
Possono comparire delle generiche espressioni sul valore
degli attributi di ciascuna riga selezionata:
Select stipendio/12 as stipendio_mensile
dott. ing. Francesco Guerra 8
2 DB
9. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: clausola where predicati semplici
Predicati semplici: operatori =,<>,>, >=, <, <=
pag 142/143 [BERGAMASCHI]
Nel caso in cui i predicati sono separati dall’operatore and,
sono selezionate solo le righe nelle quali tutti i predicati
sono veri.
Quando i predicati sono separati dall’operatore or, sono
selezionate solo le righe per cui almeno uno dei predicati
risulta vero.
L’operatore logico not è unario e inverte il valore di verita’
del predicato.
Se si esprime una relazione con l’uso di and e or, conviene
esplicitare l’ordine di valutazione mediante l’uso delle
parentesi.
Selezionare gli studenti iscritti al primo anno di corso e che
risiedano a Modena o a Reggio Emilia
dott. ing. Francesco Guerra 9
2 DB
10. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: clausola where predicati semplici
Uso del like: nel confronto tra stringhe l’operatore like
permette di utilizzare dei caratteri speciali _ per
rappresentare il confronto con un carattere arbitrario e %
per una stringa di un numero arbitrario (eventualmente
nullo) di caratteri arbitrari.
dott. ing. Francesco Guerra 10
2 DB
11. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: gestione dei duplicati
E’ possibile che una interrogazione restituisca più volte uno
stesso valore (anni di corso degli studenti che abitano a
Modena).
L’eliminazione dei duplicati è specificata con la parola chiave
distinct.
Se la clausola select contiene una primary key per ogni tabella
che compare nella clausola from, il risultato non contiene dei
duplicati
dott. ing. Francesco Guerra 11
2 DB
12. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL
Operatori quantificati: pag 143 [BERGAMASCHI]
ANY | ALL
Operatore di confronto con valori NULL:
Attributo is [not] null
Ordinamento del risultato: pag 143 [BERGAMASCHI]
Order by Attributo [asc | desc] {, Attributo [asc | desc]}
dott. ing. Francesco Guerra 12
2 DB
13. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: prodotto cartesiano e join
pag 144/151 [BERGAMASCHI]
Sintassi:
Select attr
From Tabella [[as] Alias]
{[TipoJoin] join Tabella [[as] Alias] on CondizionediJoin}
TipoJoin:
Inner default, si puo’ omettere
Right outer
Left outer
Full outer
dott. ing. Francesco Guerra 13
2 DB
14. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: interrogazioni innestate
Una interrogazione e’ innestata se la sua condizione e’
formulata utilizzando il risultato di un’altra interrogazione,
chiamata subquery:
Operatori quantificati
Operatori di set
Quantificatore esistenziale
pag 152/158 [BERGAMASCHI]
dott. ing. Francesco Guerra 14
2 DB
15. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Il linguaggio SQL: operatori aggregati
Gli operatori aggregati sono gestiti come una estensione
delle normali interrogazioni: prima viene eseguita
l’interrogazione e poi viene applicato l’operatore aggregato.
Ci sono 5 operatori aggregati:
Count
Sum
Max
Min
Avg
pag 159/160 [BERGAMASCHI]
dott. ing. Francesco Guerra 15
2 DB
16. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Bibliografia
Atzeni, Ceri, Paraboschi, Torlone: Basi di dati: Modelli e
linguaggi di interrogazione, McGraw-Hill
Beneventano, Bergamaschi, Guerra, Vincini: Progetto di
basi di dati relazionali, Pitagora Editrice Bologna, 2007
dott. ing. Francesco Guerra 16
2 DB
17. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA
Schema di esempio
S(Matr,SNome,Citta,ACorso)
C(CC,CNome,CD)
FK: CD REFERENCES D
D(CD,CNome,Citta)
E(Matr,CC,Data,Voto)
FK: Matr REFERENCES S
FK: CC REFERENCES C
dott. ing. Francesco Guerra 17
2 DB