vuoi
o PayPal
tutte le volte che vuoi
SELECT
Id,
scontrino,
descrizione AS prodotto,
prezzo unitario,
quantità,
prezzo unitario * quantità AS prezzo totale
OPPURE
SELECT
Id,
scontrino,
descrizione AS prodotto,
prezzo unitario,
quantità,
(prezzo unitario – 0.10) * quantità AS prezzo_tot_scont
FROM vendite
Ordinamento del risultato.
Basta aggiungere nella query ORDER BY in maniera ascendente (ASC) e
discendente (DESC).
Esempio:
SELECT corso, data, voto, lode
FROM esami
WHERE studente = ‘001’
ORDER BY voto DESC, lode DESC
Per eliminare le tuple duplicate si specifica con la parola chiave DISTINCT dopo
SELECT:
SELECT DISTINCT corso
FROM esami
La ridenominazione.
Per modificare il nome di un attributo di una tabella attraverso la clausola
SELECT, si usa con AS.
Esempio: Programmi P o Programmi AS P.
Gli operatori insiemistici.
Le relazioni delle basi di dati sono degli insiemi, possono essere combinate tra
loro attraverso gli operatori insiemistici di unione, intestazione e differenza. In
SQL lite combinando il risultato di due o più query SELECT. Inoltre, si basa sulla
posizione e non sul nome degli attributi, quindi che abbiano lo stesso schema e
lo stesso numero di attributi.
Unione = UNION
Intersezione = INTERSECT
Differenza = EXCEPT
SELECT cognome, nome
FROM Amici
INTERSECT
SELECT cognome, nome
FROM Studenti
Manipolazione di dati in SQL.
Si tratta qui di manipolazione dell’istanza: l’inserimento, la cancellazione e
l’aggiornamento di righe. DML.
Cancellazione di righe.
Il comando DELETE consente di cancellare da una tabella le righe che
soddisfano una determinata condizione:
DELETE FROM (tabella)
WHERE (condizione)
Se omessa, l’intero contenuto della tabella è eliminato.
DELETE
FROM Amici
WHERE cognome = ‘Bianchi’
AND nome = ‘Ugo’
Aggiornamento di righe.
Si usa il comando UPDATE
UPDATE (tabella) UPDATE Amici
SET (attributo) = (espressione), SET indirizzo = ‘Via dei ciclamini 200’
(attributo) = (espressione) WHERE cognome = ‘Bianchi’
WHERE (condizione) and nome = ‘Ugo’
Oppure per aumentare di un’unità:
UPDATE Esami
SET voto = voto + 1 (‘=’ non operatore di uguaglianza ma di assegnazione)
WHERE voto < 30
CAPITOLO 4. Lavorare con più tabelle.
La capacità di raggruppare senza ridondanze più elementi sparsi su diverse
tabelle.
La struttura del dominio.
Nel modello relazionale i legami logici sono stabiliti n base all’uguaglianza di
valori di attributi delle tuple, permettendo di rappresentare domini complessi.
Prendendo in esempio le due tabelle ‘Amici’ e ‘Telefoni’, notiamo che ogni tupla
della tabella amici rappresenta una persona con tutti i suoi dati elementari e si
identificano con una chiave, il codice fiscale. Mentre, siccome il numero di
telefono non è un attributo elementare degli amici, si è creata un’altra tabella
che all’interno contiene i dati elementari di un telefono, ovvero il numero di
cellulare e il codice fiscale, che in questo caso non rappresenta un telefono
bensì il suo proprietario.
Relazione: rappresenta una classe di oggetti del dominio con i suoi attributi
indivisibili (atomici) in questo caso il codice fiscale.
Chiavi esterne e vincoli di integrità referenziale.
Le chiavi esterne. RIVEDERE.
I legami tra due relazioni vengono stabiliti attraverso un attributo che abbia
stessi valori.
Una chiave esterna di una relazione è un attributo o un insieme di attributi che
non ha solitamente funzione di chiave primarie della relazione in cuoi compare,
ma è invece chiave primaria in un'altra relazione, alla quale è legata attraverso
un'associazione nello schema concettuale.
Integrità referenziale.
Esistono istanze di basi di dati nel modello relazionale che, pur sintatticamente
corrette, non rappresentano informazioni possibili per l’applicazione di
interesse. Allo scopo di evitare che questo accada è stato introdotto il concetto
di vincolo di integrità. Ogni vincolo può essere visto come un predicato che
associa ad ogni istanza il valore vero o falso. Se il predicato assume valore vero
diciamo che l’istanza soddisfa il vincolo. In generale ad uno schema di base di
dati associamo un insieme di vincoli, e consideriamo corrette solo quelle
istanze che soddisfano tutti i vincoli. Possiamo distinguere due categorie di
vincoli.
Vincolo intrarelazionale: se il suo soddisfacimento è definito rispetto a singole
relazioni della base di dati. Può essere quindi un vincolo su una tupla , ovvero
un vincolo che può essere valutato su ciascuna tupla indipendentemente dalle
altre, o un vincolo su valori, in quanto impone una restrizione sul dominio dell’
attributo. Come per esempio la lode (o sì o no).
Vincoli di integrità referenziale. (saltato4.2)
Il vincolo di integrità referenziale può essere definito nella CREATE TABLE dopo
l’elencazione dei nomi di attributo e si scrive:
CREATE TABLE Telefoni (
Codice fiscale CHAR (16),
numero VARCHAR (25),
PRIMARY KEY (codice fiscale, numero)
FOREIGN KEY (codice fiscale) REFERENCES Amici (codice fiscale)
Reazione alla violazione dei vincoli.
I vincoli di integrità rappresentano delle condizioni definite per uno schema
delle basi di dati. Il DBMS si occupa di controllare che questi vincoli siano
rispettati. I comandi che possono violare ciò sono: INSERT, UPDATE, DELETE
oppure nelle righe UNIQUE, NOT NULL e PRIMARU KEY nel caso il DBMS non
esegue la query o comunque segna errore. Per impedire tutto ciò, compreso
l’errore bisogna inserire:
-DO NOTHING: impedisce il comando di cancellazione.
-CASCADE: cancellare a cascata alcune righe delle tabelle (nell’esempio se si
cancellano le persone, vanno cancellate anche le macchine che le
appartengono.
-SET NULL: porre a NULL i valori dell’attributo in questo caso proprietario, per le
righe della tabella automobili.
-SET DEFAULT: sostituire i valori che diventerebbero inconsistenti. In sql lite:
ON (azione)(reazione) dove Azione: UPDATE, DELETE mentre Reazione: DO
NOTHING, CASCADE, SET NULL, e SET DEFAULT.
Il Join. Fare esercizi pagine 95 in poi
È uno strumento che consente di trovare specifiche tuple conoscendo solo lo
schema delle tabelle relazionali, collegandole tra loro anche se non hanno in
comune alcun nome di attributo, anzi è richiesto che non ci sia poiché è
possibile nel caso rinominare attributi omonimi con l’operatore della
ridenominazione. Il Join viene espresso nella clausola WHERE Il DBMS quindi
moltiplica ogni tupla della tabella per la corrispettiva dell’altra, distinguendo
poi così solo le tuple che ci interessano, specificate all’interno della query.
In sql lite: Quella generale è
SELECT distinct (lista attributi)
FROM (lista tabelle)
WHERE (condizioni)
ORDER BY (lista attributi ordinamento)
Quando l’interrogazione coinvolge numerose tabelle esse vengono scritte al
posto della clausola (lista tabelle) separate dalla virgola oppure opzionalmente
ridenominate con ALIAS : AS. L’alias va usato nel from solamente se c’è
omonimia negli attributi.
Esempio:
SELECT DISTINCT voto
FROM Studenti, Esami
WHERE matricola = studente
And cognome= ‘Studiosi’
And nome = ‘Sandra’
Varianti dell’operatore di Join. Esterno.
A differenza del join ordinario fa sì che i valori non si perdono nella relazione o
a destra o a sinistra, oppure entrambe (FULL).
Join Naturale.
Si utilizza su attributi omonimi, con lo stesso nome.
SELECT *
FROM Amici A NATURAL JOIN Telefoni T
In SQL lite.
Si effettuano nella clausola FROM e si scrive: Se vogliamo far apparire tutti gli
amici anche quelli privi di numero di
telefono, join esternoxs
SELECT tabella AS alias SELECT *
FROM tipo join JOIN tabella AS alias FROM Amici A LEFT JOIN Telefoni
T
ON predicato join ON A.codice_fiscale = T.codice_fiscale
Viste e indipendenza logica.
Il DBMS consente di definire delle interrogazioni permanenti che permettono di
aggiungere, ulteriori relazioni chiamate viste, le cui tuple dipendono da tuple
di altre relazioni. Utili per interrogazioni frequenti, punto di partenza per
interrogazioni complesse, visione limitata dell’istanza e modifiche allo schema
di dati (in quanto grazie al modello relazionale è possibile modificare la
rappresentazione logica interna dei dati senza intaccare la rappresentazione
logica esterna, chiamata indipendenza logica dei dati). Una sorta di
‘relazione virtuale’ che non dispone di tuple proprie ma sono aggiornate in base
all’istanza che cambia, una volta definite e dotate di nome possono essere
usate per la lettura oppure all’interno di interrogazioni o per creare altre viste:
CREATE VIEW (nome vista) AS
(select SQL)
Capitolo 5. Progetto di basi di dati.
Operatori di aggregazione.
Sintetizzano tutto in un'unica tupla
Avg(attributo) valore medio solo numeri
Min.(attributo)
Max(attributo)
Sum(attributo) somma solo numeri
Count(attributo*) conteggio
Having(attributo) seleziona alcune tuple dopo il raggruppamento
Group by(attributo)
Per operare sulla collezione di dati occorre:
-Interpretare una base di dati esistente, identificando le entità e le relazioni.
-progettare una base di dati, con la sua struttura, partendo dall’osservazione
della realtà.
-interagire aggiungendo caratteristiche.
-modificare correggendo eventuali manchevolezze.
Ciclo di vita delle applicazioni.
I sistemi operativi e i device driver fanno parte anche loro dei software di base,
detto anche applicativo o applicazione. Esso è concepito per consentire agli
utenti di svolgere un determinato compito. Ovviamente quest’applicazione
deve:
-richiedere determinate capacità, che siano banali o complesse, concepita per
un determinato utente detto finale.
-caratterizzata da una interfaccia utente che consente all’utente di svolgere
attività che devono soddisfare esigenze specifiche come per i giochi online, per
esempio vedere gli altri giocatori online.
-utilizzo di hardware dedicato, un dispositivo per un uso specifico come un
navigatore per lo smartphone.
-può richiedere l’utilizzo di informazioni preesistenti all’avvio dell’applicazione.
Fasi di sviluppo e versioni.
La creazione di un’applicazione, ovvero la metodologia di progetto, ha le
seguenti fasi:
1.Raccolta di requisiti: definizione degli obbiettivi dell’applicazione.