SQL
• Linguaggio di interrogazione per basi di dati relazionali
• Relazione = tabella con attributi (a
1, a
2, …, a
n):
• Funzionalità principali di SQL:
▪ Creazione delle tabelle
▪ Interrogazione della base di dati
▪ Modifica delle tabelle
• Forma (essenziale) di una interrogazione SQL:
a
1a
1… a
ntuple (righe)
SELECT attributi FROM tabelle WHERE predicato
1.
Prodotto cartesiano delle tabelle (FROM)
2.
Selezione delle righe che soddisfano il predicato (WHERE)
3.
Proiezione sulle colonne degli attributi (SELECT)
Esempio di Interrogazione SQL
• Quali docenti hanno tenuto un corso di cui Silvia ha superato l’esame ?
Laboratorio di Modellazione Virtuale II SQL - 1
studente esame voto anna analisi 28 anna fisica 27 luigi algebra 24 silvia disegno 30 silvia fisica 25 mino algebra 24 laura algebra 26
corso crediti docente
algebra 10 bianchi analisi 5 rossi disegno 5 verdi
fisica 5 viola
esami
corsi
SELECT docente FROM esami, corsi
WHERE corso = esame AND studente = 'silvia'
docente verdi
viola
2
Esempio di Interrogazione SQL (ii)
studente esame voto corso crediti docente
anna analisi 28 algebra 10 bianchi anna analisi 28 analisi 5 rossi anna analisi 28 disegno 5 verdi anna analisi 28 fisica 5 viola anna fisica 27 algebra 10 bianchi anna fisica 27 analisi 5 rossi anna fisica 27 disegno 5 verdi
anna fisica 27 fisica 5 viola
luigi algebra 24 algebra 10 bianchi luigi algebra 24 analisi 5 rossi luigi algebra 24 disegno 5 verdi luigi algebra 24 fisica 5 viola silvia disegno 30 algebra 10 bianchi silvia disegno 30 analisi 5 rossi silvia disegno 30 disegno 5 verdi silvia disegno 30 fisica 5 viola silvia fisica 25 algebra 10 bianchi silvia fisica 25 analisi 5 rossi silvia fisica 25 disegno 5 verdi silvia fisica 25 fisica 5 viola mino algebra 24 algebra 10 bianchi mino algebra 24 analisi 5 rossi mino algebra 24 disegno 5 verdi mino algebra 24 fisica 5 viola laura algebra 26 algebra 10 bianchi laura algebra 26 analisi 5 rossi laura algebra 26 disegno 5 verdi laura algebra 26 fisica 5 viola
studente esame voto corso crediti docente silvia disegno 30 disegno 5 verdi silvia fisica 25 fisica 5 viola
docente verdi viola
SELECT docente FROM esami, corsi
WHERE corso = esame AND
studente = 'silvia'
Creazione delle Tabelle
Laboratorio di Modellazione Virtuale II SQL - 1
esami studente
esame voto
corsi corso crediti docente
docenti nome dipartimento
eta
CREATE TABLE esami
( studente VARCHAR(15), esame VARCHAR(30), voto INT,
PRIMARY KEY(studente, esame)
)
CREATE TABLE corsi
( corso VARCHAR(15), crediti INT,
docente VARCHAR(15), PRIMARY KEY(corso)
)
CREATE TABLE docenti
( nome VARCHAR(15), dipartimento VARCHAR(15), eta INT,
PRIMARY KEY(nome)
)
4
CREATE TABLE nome-tabella (
nome-attributo-1 tipo-attributo-1, nome-attributo-2 tipo-attributo-2, …
nome-attributo-n tipo-attributo-n,
PRIMARY KEY (lista-attributi)
)
Istanziazione delle Tabelle
esami studente
esame voto
corsi corso crediti docente
docenti nome dipartimento
eta
INSERT INTO esami (studente, esame, voto) VALUES ('anna', 'analisi', 28),
('anna', 'fisica', 27), ('luigi', 'algebra', 24), ('silvia', 'disegno', 30), ('silvia', 'fisica', 25), ('mino', 'algebra', 24), ('laura', 'algebra', 26)
INSERT INTO corsi (corso, crediti, docente) VALUES ('algebra', 10, 'bianchi'),
('analisi', 5, 'rossi'), ('disegno', 5, 'verdi'), ('fisica', 5, 'viola')
INSERT INTO docenti (nome, dipartimento, eta) VALUES ('bianchi', 'matematica', 32),
('rossi', 'matematica', 44),
('verdi', 'design', 39),
('viola', 'scienze', 54),
('neri', 'design', 36),
('gialli', 'scienze', 50)
Istanziazione delle Tabelle (ii)
Laboratorio di Modellazione Virtuale II SQL - 1
studente esame voto anna analisi 28 anna fisica 27 luigi algebra 24 silvia disegno 30 silvia fisica 25 mino algebra 24 laura algebra 26
corso crediti docente algebra 10 bianchi
analisi 5 rossi disegno 5 verdi fisica 5 viola
esami corsi docenti
nome dipartimento eta bianchi matematica 32
rossi matematica 44 verdi design 39 viola scienze 54
neri design 36
gialli scienze 50
6
Interrogazione della Base di Dati (1)
• Chi sono gli studenti che hanno sostenuto l'esame di algebra?
studente laura
luigi mino studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26
SELECT studente FROM esami
WHERE esame = 'algebra'
Interrogazione della Base di Dati (2)
• Quali esami ha sostenuto silvia?
Laboratorio di Modellazione Virtuale II SQL - 1
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26
SELECT esame FROM esami
WHERE studente = 'silvia'
esame disegno
fisica
8
Interrogazione della Base di Dati (3)
• Chi sono gli studenti che hanno sostenuto l'esame di analisi o quello di algebra?
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26
SELECT studente FROM esami
WHERE esame = 'analisi' OR esame = 'algebra'
studente anna laura luigi mino
Interrogazione della Base di Dati (4)
• Quali sono gli esami superati da almeno uno studente con il voto 30?
Laboratorio di Modellazione Virtuale II SQL - 1
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26
SELECT esame FROM esami
WHERE voto = 30
esame disegno
10
Interrogazione della Base di Dati (5)
• Chi sono gli studenti che hanno sostenuto un esame con voto maggiore di 27?
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26
SELECT studente FROM esami
WHERE voto > 27
studente anna silvia
Interrogazione della Base di Dati (6)
• Chi sono i docenti con età compresa tra 30 e 40 anni?
Laboratorio di Modellazione Virtuale II SQL - 1
SELECT nome FROM docenti
WHERE eta >= 30 AND eta <= 40
nome bianchi
verdi neri
SELECT nome FROM docenti
WHERE eta BETWEEN 30 AND 40
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
12
Interrogazione della Base di Dati (7)
• Quali sono i dipartimenti con un docente di età maggiore di 50?
SELECT dipartimento FROM docenti
WHERE eta > 50
dipartimento scienze nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
Interrogazione della Base di Dati (8)
• Indicare i docenti del dipartimento di design, e la loro età
Laboratorio di Modellazione Virtuale II SQL - 1
SELECT nome, eta FROM docenti
WHERE dipartimento = 'design'
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
nome eta
verdi 39
neri 36
14
Interrogazione della Base di Dati (9)
• Quali sono i corsi afferenti al dipartimento di matematica?
SELECT corso
FROM corsi, docenti
WHERE docente = nome AND
dipartimento = 'matematica'
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
corso algebra
analisi corso crediti docente
algebra 10 bianchi
analisi 5 rossi
disegno 5 verdi
fisica 5 viola
Interrogazione della Base di Dati (10)
• Quanti anni ha il docente di disegno?
Laboratorio di Modellazione Virtuale II SQL - 1
SELECT eta
FROM corsi, docenti
WHERE docente = nome AND corso = 'disegno'
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
eta 39 corso crediti docente
algebra 10 bianchi
analisi 5 rossi
disegno 5 verdi
fisica 5 viola
16
Interrogazione della Base di Dati (11)
• Quali sono i dipartimenti cui afferisce un corso di 10 crediti?
SELECT dipartimento FROM corsi, docenti
WHERE docente = nome AND crediti = 10
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
dipartimento matematica corso crediti docente
algebra 10 bianchi
analisi 5 rossi
disegno 5 verdi
fisica 5 viola
Interrogazione della Base di Dati (12)
• Chi sono gli studenti che hanno sostenuto un esame afferente al dip. di scienze?
Laboratorio di Modellazione Virtuale II SQL - 1 18
SELECT studente
FROM esami, corsi, docenti WHERE esame = corso AND docente = nome AND
dipartimento = 'scienze'
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
studente anna silvia corso crediti docente
algebra 10 bianchi
analisi 5 rossi
disegno 5 verdi
fisica 5 viola
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26
Interrogazione della Base di Dati (13)
• Quali sono i dip. cui afferiscono corsi di cui silvia ha sostenuto qualche esame?
SELECT dipartimento
FROM esami, corsi, docenti WHERE esame = corso AND docente = nome AND studente = 'silvia'
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
dipartimento design scienze corso crediti docente
algebra 10 bianchi
analisi 5 rossi
disegno 5 verdi
fisica 5 viola
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26
Interrogazione della Base di Dati (14)
• Chi sono e quanti anni hanno i docenti relativi ad esami superati con voto > 27 ?
Laboratorio di Modellazione Virtuale II SQL - 1 20
SELECT nome, eta
FROM esami, corsi, docenti WHERE esame = corso AND docente = nome AND voto > 27
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
corso crediti docente
algebra 10 bianchi
analisi 5 rossi
disegno 5 verdi
fisica 5 viola
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26 nome eta
rossi 44 verdi 39
Interrogazione della Base di Dati (15)
• Quali sono i voti degli esami relativi a docenti con più di 50 anni?
SELECT voto
FROM esami, corsi, docenti WHERE esame = corso AND docente = nome AND eta > 50
nome dipartimento eta
bianchi matematica 32
rossi matematica 44
verdi design 39
viola scienze 54
neri design 36
gialli scienze 50
corso crediti docente
algebra 10 bianchi
analisi 5 rossi
disegno 5 verdi
fisica 5 viola
studente esame voto
anna analisi 28
anna fisica 27
luigi algebra 24
silvia disegno 30
silvia fisica 25
mino algebra 24
laura algebra 26 voto
27 25