SQLbasi
SQLbasi
SQL - Basi 2
SQL: standard e dialetti
SQL - Basi 3
Organizzazione del materiale
SQL - Basi 4
Data Definition Language (DDL)
SQL - Basi 5
Creazione ed eliminazione di tabelle
SQL - Basi 6
Definizione di tabelle: esempio
SQL - Basi 8
Chiavi
CF char(16) UNIQUE,
o dopo aver dichiarato tutti gli attributi, se la chiave consiste di uno o più
attributi:
UNIQUE(Cognome,Nome)
n Ovviamente, specificare
UNIQUE(Cognome),
UNIQUE(Nome)
sarebbe molto più restrittivo
SQL - Basi 9
Chiavi primarie
n Va osservato che:
n La specifica di una chiave primaria non è obbligatoria
n Non è necessario specificare NOT NULL per gli attributi della primary
key
SQL - Basi 10
Chiavi straniere (“foreign key”)
n Ovvero
FOREIGN KEY (Sede) REFERENCES Sedi(Sede)
SQL - Basi 11
Vincoli generici (“check constraint”)
non permette tuple con stipendio negativo, ma ammette valori nulli per
l’attributo Stipendio
n Se CHECK viene espresso a livello di tabella (anziché nella definizione
dell’attributo) è possibile fare riferimento a più attributi della tabella stessa
CHECK (ImportoLordo = Netto + Ritenute)
SQL - Basi 12
Vincoli con nomi
CONSTRAINT ForeignKeySedi
FOREIGN KEY (Sede) REFERENCES Sedi
SQL - Basi 13
Modifica di tabelle
SQL - Basi 14
Data Manipulation Language (DML)
SQL - Basi 15
DB di riferimento per gli esempi
Imp Sedi
CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta
E001 Rossi S01 Analista 2000 S01 Biondi Milano
E002 Verdi S02 Sistemista 1500 S02 Mori Bologna
E003 Bianchi S01 Programmatore 1000 S03 Fulvi Milano
SQL - Basi 16
L’istruzione SELECT
SELECT A1,A2,..,Am
FROM R1,R2,..,Rn
WHERE <condizione>
ovvero:
n SELECT (o TARGET) list (cosa si vuole come risultato)
n clausola FROM (da dove si prende)
n clausola WHERE (che condizioni deve soddisfare)
SQL - Basi 17
SELECT su singola tabella
SQL - Basi 18
SELECT senza proiezione
SELECT *
FROM Imp
WHERE Sede = ‘S01’
SQL - Basi 19
SELECT senza condizione
n Quindi
SELECT *
FROM Imp
SQL - Basi 20
Tabelle vs Relazioni
SQL - Basi 21
Espressioni nella clausola SELECT
SQL - Basi 22
Ridenominazione delle colonne
SQL - Basi 23
Pseudonimi
n Per chiarezza, ogni nome di colonna può essere scritto prefissandolo con
il nome della tabella:
…e si può anche usare uno pseudonimo (alias) in luogo del nome della
tabella
SQL - Basi 24
Operatore LIKE
Nomi degli impiegati che finiscono con una ‘i’ e hanno una ‘i’ in seconda
posizione
SQL - Basi 25
Operatore BETWEEN
Nome e stipendio degli impiegati che hanno uno stipendio compreso tra
1300 e 2000 Euro (estremi inclusi)
Nome Stipendio
Rossi 2000
Verdi 1500
SQL - Basi 26
Operatore IN
SQL - Basi 28
Logica a 3 valori in SQL
n Nel caso di espressioni complesse, SQL ricorre alla logica a 3 valori: vero
(V), falso (F) e “sconosciuto” (?)
SQL - Basi 29
Ordinamento del risultato
n Per ordinare il risultato di una query secondo i valori di una o più colonne
si introduce la clausola ORDER BY, e per ogni colonna si specifica se
l’ordinamento è per valori “ascendenti” (ASC, il default) o “discendenti”
(DESC)
Nome Stipendio
Neri 2500
SELECT Nome, Stipendio Rossi 2000
FROM Imp Verdi 1500
SQL - Basi 30
Interrogazioni su più tabelle
n L’interrogazione
SQL - Basi 32
Ridenominazione del risultato
SedeE001 AltraSede
S01 S02
S01 S03
SQL - Basi 33
Self Join
Genitori G1 Genitori G2
Chi sono i nonni di Anna?
Genitore Figlio Genitore Figlio
Luca Anna Luca Anna
Maria Anna Maria Anna
Giorgio Luca Giorgio Luca
Silvia Maria Silvia Maria
Enzo Maria Enzo Maria
SQL - Basi 34
Join espliciti
SQL - Basi 35
Left join
Guidatore
Nome Cognome Patente
n In tutti i casi gli elementi delle SELECT list devono avere tipi compatibili e
gli stessi nomi se si vogliono colonne con un’intestazione definita
n L’ordine degli elementi è importante (notazione posizionale)
n Il risultato è in ogni caso privo di duplicati, per mantenerli occorre
aggiungere l’opzione ALL:
SQL - Basi 36
Operatori insiemistici: esempi (1)
R A B S C B
SELECT A B
1 a 1 a SELECT B
FROM R 1
1 a 1 b FROM R a
UNION 2
2 a 2 a UNION ALL a
SELECT C 3
SELECT B a
2 b 2 c FROM S 4
2 c 3 c FROM S b
c
3 b 4 d
b
SELECT A,B a
FROM R b
SELECT A A
UNION a
FROM R 1
SELECT B,C AS A c
UNION 2
FROM S c
SELECT C AS A 3
d
FROM S 4 Non corretta!
SQL - Basi 37
Operatori insiemistici: esempi (2)
R A B
1 a SELECT B B SELECT B B
1 a FROM R a FROM S d
2 a INTERSECT b EXCEPT
2 b SELECT B c SELECT B
2 c FROM S FROM R
3 b
S C B B B
SELECT B SELECT B
1 a FROM R a FROM R a
1 b
INTERSECT ALL a EXCEPT ALL b
2 a b
SELECT B SELECT B
2 c FROM S c FROM S
3 c
4 d
SQL - Basi 38
Istruzioni di aggiornamento dei dati
n INSERT può usare il risultato di una query per eseguire inserimenti multipli
SQL - Basi 39
Inserimento di tuple: caso singolo
SQL - Basi 40
Inserimento di tuple: caso multiplo
n Gli schemi del risultato e della tabella in cui si inseriscono le tuple possono
essere diversi, l’importante è che i tipi delle colonne siano compatibili
SQL - Basi 41
Cancellazione di tuple
SQL - Basi 42
Modifica di tuple
n Anche l’istruzione UPDATE può fare uso di una condizione per specificare
le tuple da modificare e di espressioni per determinare i nuovi valori
UPDATE Sedi
SET Responsabile = ‘Bruni’,
Citta = ‘Firenze’
WHERE Sede = ‘S01’
UPDATE Imp
SET Stipendio = 1.1*Stipendio
WHERE Ruolo = ‘Programmatore’
SQL - Basi 43
Politiche di “reazione”
SQL - Basi 44
Riassumiamo:
SQL - Basi 45