Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
[ON DELETE NO ACTION|CASCADE|SET NULL|SET DEFAULT]
[ON UPDATE NO ACTION|CASCADE|SET NULL|SET DEFAULT],
[[altri_attributi],]
[FOREIGN KEY (<attributi_referenti>) REFERENCES <relazione_riferita>[(<attributi_riferiti>)]
[ON DELETE NO ACTION|CASCADE|SET NULL|SET DEFAULT]
[ON UPDATE NO ACTION|CASCADE|SET NULL|SET DEFAULT],]
[altri_vincoli]
);
NOTA - Gli attributi riferiti per mezzo di una chiave esterna devono essere chiave della rispettiva relazione, cioè
devono essere contrassegnati dalle clausole UNIQUE o PRIMARY KEY; inoltre devono avere dominio compatibile con
gli attributi referenti.
ON DELETE - Clausola che definisce il comportamento del DBMS relativamente alla cancellazione delle tuple riferite
tramite chiave esterna.
ON UPDATE - Clausola che definisce il comportamento del DBMS relativamente alla modifica delle tuple riferite
tramite chiave esterna.
Comportamento
NO ACTION - Le tuple della relazione riferita sono cancellate o modificate soltanto se non esiste alcuna tupla della relazione
referente associata ad esse. È il comportamento predefinito.
CASCADE - Le tuple della relazione riferita sono cancellate o modificate e sono cancellate o modificate di conseguenza anche le
tuple associate ad esse tramite chiave esterna.
SET NULL - Le tuple della relazione riferita sono cancellate o modificate e gli eventuali valori associati ad esse tramite chiave
esterna sono impostati a NULL (se tale operazione non è proibita da clausole NOT NULL).
SET DEFAULT - Le tuple della relazione riferita sono cancellate o modificate e gli eventuali valori associati ad esse tramite chiave
esterna sono impostati al valore predefinito. 7
3.1.5 Cancellazione delle relazioni
DROP TABLE <nome_relazione> RESTRICT|CASCADE;
Comportamento
RESTRICT - La relazione viene cancellata soltanto se non include alcun riferimento ad altri elementi della base di dati.
CASCADE - La relazione viene cancellata e sono eliminati tutti gli elementi del database a cui essa si riferisce.
3.1.6 Modifica delle relazioni
ADD COLUMN - Determina l’aggiunta di un nuovo attributo e delle sue eventuali caratteristiche (dominio, valore
predefinito, vincoli).
ALTER TABLE <nome_relazione>
ADD COLUMN <specifica_attributo>;
ALTER COLUMM - Determina la modifica di un attributo della relazione e delle sue caratteristiche.
ALTER TABLE <nome_relazione>
ALTER COLUMN <nome_attributo> [SET DEFAULT <valore_predefinito>]|[DROP DEFAULT];
DROP COLUMN - Determina l’eliminazione di un attributo, nelle modalità RESTRICT o CASCADE.
ALTER TABLE <nome_relazione>
DROP COLUMN <nome_attributo> RESTRICT|CASCADE;
ADD CONSTRAINT - Determina l’aggiunta di un vincolo di integrità.
ALTER TABLE <nome_relazione>
ADD CONSTRAINT <vincolo>;
DROP CONSTRAINT - Determina l’eliminazione di un vincolo di integrità già definito.
ALTER TABLE <nome_relazione>
DROP CONSTRAINT <nome_vincolo>;
3.2 M :
ANIPOLAZIONE DEI DATI INTERROGAZIONI
3.2.1 Forma base delle interrogazioni
SELECT [DISTINCT] <attributi>|*
FROM <relazioni_oggetto>
[WHERE <condizioni>];
SELECT - Clausola di proiezione, consente di specificare gli attributi che l’interrogazione deve restituire, attraverso il
nome o nella forma NomeRelazione.NomeAttributo. La clausola opzionale DISTINCT consente di ignorare eventuali
tuple duplicate; il carattere * indica la selezione di tutti gli attributi della relazione oggetto.
NOTA - Ogni interrogazione restituisce determinati attributi nell’ordine in cui sono specificati entro l’interrogazione
stessa o, in alternativa, secondo la definizione delle relazioni coinvolte.
FROM - Clausola di provenienza, consente di specificare le relazioni sulla quale è definita l’interrogazione.
NOTA - Gli attributi elencati con la clausola SELECT devono far parte delle relazioni selezionate attraverso la clausola
FROM.
WHERE - Clausola (opzionale) di qualificazione, consente di restringere l’interrogazione ai soli dati che rispettano
determinate condizioni (espressioni, funzioni o sotto-interrogazioni), eventualmente combinate attraverso gli
operatori logici AND, OR, NOT.
NOTA - Gli operatori logici hanno la precedenza usuale e possono essere raggruppati attraverso l’uso di parentesi.
3.2.2 Operatori e funzioni
Operatori - Il linguaggio SQL supporta gli operatori logici e aritmetici principali (=, <, >, +, -, *, /, etc.) e una serie di
altri operatori e funzioni.
Operatore Specifica
BETWEEN - Consente di valutare l’appartenenza di un valore e a un e [NOT] BETWEEN v AND v
1 2
determinato intervallo [v , v ]. Sostanzialmente è una forma abbreviata del
1 2 8
confronto e <= v OR e >= v (minore o uguale o maggiore o uguale).
1 2
IN - Consente di valutare l’appartenenza di un valore e a un insieme
specificato (v , v , …, v ). Sostanzialmente è una forma abbreviata del
1 2 n
confronto e = v OR e = v OR … OR e = v . e [NOT] IN (v , v , …, v )
1 2 n 1 2 n
NOTA - L’operatore IN è particolarmente utile quando l’insieme di valori non è
direttamente enumerato ma risulta da un’interrogazione a se stante.
LIKE - Consente di confrontare le stringhe con particolari pattern, cioè con
espressioni testuali ottenute attraverso i caratteri speciali ‘%’ (che denota una e [NOT] LIKE ‘pattern’
qualunque sequenza di caratteri) e ‘_’ (che denota un carattere qualsiasi).
Funzioni - Le funzioni del linguaggio SQL possono comparire nelle interrogazioni, sia nella clausola WHERE, sia nella
clausola SELECT; in quest’ultimo caso permettono di definire attributi virtuali, ai quali è possibile dare un nome
attraverso la particella AS (<attributo_virtuale> AS <nome>).
Funzione Specifica
ABS - Restituisce il valore assoluto (o modulo) di un valore numerico n. ABS(n)
MOD - Dati due valori numerici interi a e b, fornisce il resto (intero) della MOD(a, b)
divisione tra il primo e il secondo.
LENGTH - Restituisce la lunghezza in caratteri di una stringa s. LENGTH(‘s’)
UPPER - Data una stringa s, la restituisce completamente in maiuscolo. UPPER(‘s’)
LOWER - Data una stringa s, la restituisce completamente in minuscolo. LOWER(‘s’)
SUBSTR - Data una stringa s, restituisce la sottostringa a partire dal carattere SUBSTR(‘s’, m)
in posizione m, fino al termine di s o per un numero di caratteri n SUBSTR(‘s’, m, n)
eventualmente specificato.
TRIM - Date una stringhe s , vi elimina gli spazi o i caratteri di una stringa s TRIM(‘s ’)
1 2 1
eventualmente specificata. TRIM(‘s ’ FROM ‘s ’)
2 1
CURRENT_DATE - Restituisce la data corrente. CURRENT_DATE
CURRENT_TIME - Restituisce l’ora attuale. CURRENT_TIME
CURRENT_TIMESTAMP - Restituisce data e ora attuali nel formato CURRENT_TIMESTAMP
TIMESTAMP.
EXTRACT - Dato un valore d di tipo DATE o TIME, vi estrae l’elemento EXTRACT(q FROM d)
corrispondente al qualificatore temporale q (YEAR, MONTH, DAY, etc.).
NOTA - SQL permette di applicare gli operatori algebrici elementari alle funzioni e ai valori che rappresentano date o
intervalli di tempo.
CAST - Operatore per mezzo del quale è possibile convertire i dati in un tipo diverso da quello corrente (ad esempio
tra date e stringhe o tra numeri e stringhe).
CAST(<valore>) AS <nuovo_tipo>
3.2.3 Ordinamento dei dati
ORDER BY - Clausola per l’ordinamento, crescente (ASC, predefinito) o decrescente (DESC), delle tuple risultanti da
un’interrogazione, secondo i valori di uno o più attributi specificati.
SELECT [DISTINCT] <attributi>
FROM <relazioni_oggetto>
[WHERE <condizioni>]
ORDER BY <attributo_di_riferimento> [ASC]|DESC[, altri_attributi];
3.2.4 Operazioni di join
SELECT [DISTINCT] <attributi>
FROM <relazione_1> [<alias>], <relazione_2> [<alias>][, altre relazioni]
WHERE <predicato_di_join>
NOTA 1: l’operazione di join così specificata corrisponde al prodotto cartesiano delle relazioni indicate nella clausola
FROM, al più ristretto alle tuple che soddisfano il predicato di join contenuto nella clausola WHERE.
NOTA 2: il predicato di join consiste in una o più condizioni sugli attributi delle relazioni oggetto, i quali sono indicati
nella forma NomeRelazione.Attributo o Alias.Attributo per evitare ambiguità (vale lo stesso per la specifica della
clausola SELECT).
Operazione di join Specifica (clausola FROM)
9
CROSS JOIN - Restituisce il prodotto cartesiano delle relazioni <relazione_1> CROSS JOIN <relazione_2>
specificate.
JOIN ON - Realizza l’operazione di theta-join (o equi-join, in caso di <relazione_1> JOIN <relazione_2> ON
uguaglianza). <predicato_di_join>
JOIN USING - Richiede l’uguaglianza dei valori corrispondenti agli <relazione_1> JOIN <relazione_2> USING
attributi specificati. (<lista_attributi>)
NATURAL JOIN - Realizza l’operazione di join naturale, cioè richiede <relazione_1> NATURAL JOIN <relazione_2>
l’uguaglianza dei valori corrispondenti agli attributi omonimi.
NOTA - Le operazioni di JOIN USING e NATURAL JOIN collassano gli attributi omonimi, perciò non è possibile
specificarli nella forma NomeRelazione.Attributo, ma solo attraverso il loro nome.
OUTER JOIN - Particolare operazione di join, include nel risultato delle interrogazioni le tuple che non trovano
corrispondenza attraverso l’operazione stessa e ne imposta i valori mancanti a NULL. Può essere utilizzata per
realizzare le operazioni di join naturale e theta-join.
NOTA - Per distinzione, l’operazione di join tradizionale, nelle diverse varianti, è anche chiamata INNER JOIN.
Operazione di outer join
LEFT OUTER JOIN - Include le tuple che non trovano corrispondenza attraverso l’operazione, della sola relazione specificata a
sinistra.
RIGHT OUTER JOIN - Include le tuple che non trovano corrispondenza attraverso l’operazione, della sola relazione specificata a
destra.
FULL OUTER JOIN - Include le tuple che non trovano corrispondenza attraverso l’operazione, di entrambe le relazioni coinvolte.
3.2.5 Operatori aggregati
COUNT - Operatore aggregato, restituisce la cardinalità di un insieme di valori, ossia il numero degli elementi in esso
contenuti. L’operatore può essere utilizzato in diversi modi.
Se invocato sul nome di un attributo, restituisce il numero dei valori non nulli corrispondenti ad esso entro la
relazione a cui appartiene [es: COUNT(<nome_attributo>)].
Se invocato sul nome di un attributo preceduto dalla clausola DISTINCT, restituisce il numero dei valori distinti e
non nulli corrispondenti all’attributo entro la relazione di appartenenza [es