V. Moriggia
Modelli di Base Dati
Modelli di Base Dati
7
Il linguaggio SQL
a.a. 2001/2002
7.1
V. Moriggia
Modelli di Base Dati
7.2
©
A
GI
IG
OR
M
V.
IlIl linguaggio
linguaggio per
per basi
basi di
di dati
dati
relazionali
relazionali
02
20
Comandi per:
? definizione del data base (DDL)
? manipolazione dei dati (DML)
? associazione tra tabelle diverse e permessi (DCL)
? interrogazioni da parte degli utenti (QL)
a.a. 2001/2002
7.2
V. Moriggia
Modelli di Base Dati
7.3
©
Caratteristiche
Caratteristiche
A
GI
IG
OR
M
V.
? visione
02
20
tabellare dei dati
? non richiede la specificazione dei percorsi
per ritrovare i dati
? opera su gruppi di righe o sull'intera tabella,
anziché su una riga per volta
? uso di interfacce per l’utente (a menu o
grafiche).
a.a. 2001/2002
7.3
V. Moriggia
Modelli di Base Dati
7.4
©
IlIl linguaggio
linguaggio SQL
SQL
A
GI
IG
OR
M
V.
02
20
(Structured Query Language)
Language)
? standard tra i linguaggi per la gestione di
data base relazionali.
? Identificatori
Identificatori:: nomi di tabelle e di colonne
Per identificare il nome di una colonna:
NomeTabella..NomeColonna
NomeTabella
(separati dal punto)
a.a. 2001/2002
7.4
V. Moriggia
Modelli di Base Dati
7.5
©
Dati,
Dati, costanti
costanti ee operatori
operatori
A
GI
IG
OR
M
V.
? Tipi
02
20
standard per gli attributi:
CHARACTER, DATE, INTEGER,
SMALLINT, FLOAT, ecc
ecc..
? Valore Null nelle colonne della tabella =
valore non disponibile o non definito.
? Costanti stringa delimitate dagli apici ('')
? Operatori NOT, AND e OR nella scrittura
delle condizioni.
Costanti di data tra diesis (##).
I nomi contenenti spazi vanno racchiusi tra parentesi quadre ([]).
a.a. 2001/2002
7.5
V. Moriggia
Modelli di Base Dati
7.6
©
A
GI
IG
OR
M
V.
La
La definizione
definizione delle
delle tabelle
tabelle
(DDL)
(DDL)
? CREATE
02
20
TABLE per creare una nuova
tabella (nome campi e tipo)
? ALTER TABLE per modificare la struttura
della tabella
? DROP per eliminare una tabella
Nota : queste operazioni sono eseguite nei
prodotti DBMS moderni usando
l’interfaccia grafica.
a.a. 2001/2002
7.6
V. Moriggia
Modelli di Base Dati
7.7
©
II comandi
comandi per
per la
la manipolazione
manipolazione
dei
dei dati
dati (DML)
(DML)
A
GI
IG
OR
M
V.
02
20
? INSERT
INSERT::
inserire nuovi dati nelle righe
della tabella
? UPDATE
UPDATE:: aggiornare i valori nella tabella
? DELETE
DELETE:: cancellare righe della tabella.
Nota: le operazioni sono eseguite nei
prodotti DBMS moderni usando
l’interfaccia grafica
a.a. 2001/2002
7.7
V. Moriggia
Modelli di Base Dati
7.8
©
Esempi
Esempi di
di creazione
creazione delle
delle tabelle
tabelle
A
GI
IG
OR
M
V.
a.a. 2001/2002
02
20
CREATE TABLE marche (codice INTEGER
NOT NULL, casa TEXT, indirizzo TEXT, cap
TEXT(5), città TEXT)
? CREATE TABLE modelli (nome TEXT NOT
NULL, cc INTEGER, a120kmh SINGLE, urb
SINGLE, lit CURRENCY, ggc SHORT,
Cod_Marca
Cod
_Marca INTEGER NOT NULL, uso TEXT);
? CREATE TABLE classi (classe SHORT, inf
NUMERIC, sup NUMERIC);
?
7.8
V. Moriggia
Modelli di Base Dati
7.9
©
Esempi
Esempi di
di inserimento
inserimento dei
dei dati
dati
?
?
a.a. 2001/2002
INSERT INTO marche (codice, casa, indirizzo, cap
cap,, città)
VALUES (0, 'Citroen'
'Citroen',, "rue
"rue Mt Blanc ", 80800, 'Paris‘);
INSERT INTO
modelli (nome, cc
cc,, a120kmh, urb
urb,, lit
lit,, ggc
ggc,, Cod
Cod_Marca,
_Marca, uso)
VALUES ("bx
("bx 19 trd diesel", 1905, 6.5, 6.5, 18233, NULL,
0, 'lusso‘);
INSERT INTO
modelli (nome, cc
cc,, a120kmh, urb
urb,, lit
lit,, ggc
ggc,, Cod
Cod_Marca,
_Marca, uso)
VALUES (Modello, Cilindrata, [Consumo a 120 kmh
kmh],
],
[Consumo urbano], Costo, [Giorni di consegna], [Codice
della casa produttrice], [Tipo di impiego]);
DELETE FROM classi WHERE classe < 3;
02
20
?
A
GI
IG
OR
M
V.
?
7.9
V. Moriggia
Modelli di Base Dati
7.10
©
Modifica
Modifica di
di un’intera
un’intera tabella
tabella
A
GI
IG
OR
M
V.
? CREATE
02
20
TABLE classi3 (classe SHORT,
inf NUMERIC, sup NUMERIC);
? INSERT INTO classi3 (classe, inf
inf,, sup )
SELECT classe, INT(inf
INT( inf*1.10),
*1.10), sup * 1.10
FROM classi;
? DROP TABLE classi;
oppure
? UPDATE classi
SET inf = inf
inf*1.1,
*1.1, sup = sup * 1.1;
a.a. 2001/2002
7.10
V. Moriggia
Modelli di Base Dati
7.11
©
Comandi
Comandi per
per la
la sicurezza
sicurezza (DCL)
(DCL)
A
GI
IG
OR
M
V.
? GRANT UPDATE
02
20
ON tabella
TO utente1, utente2;
? REVOKE UPDATE ON tabella
FROM utente1, utente2;
GRANT
REVOKE
a.a. 2001/2002
ALL
ALTER
DELETE
INDEX
INSERT
SELECT
UPDATE
7.11
V. Moriggia
Modelli di Base Dati
7.12
©
Manuale
Manuale di
di riferimento
riferimento
A
GI
IG
OR
M
V.
02
20
a.a. 2001/2002
7.12
V. Moriggia
Modelli di Base Dati
7.13
©
A
GI
IG
OR
M
V.
Modello
Modello di
di database
database per
per gli
gli
esempi
esempi successivi
successivi
02
20
Database con anagrafica e movimenti
Riferito a
Anagrafica
Movimento
Relativa a
Tabelle derivate :
? Anagrafiche
Anagrafiche((KCodice
KCodice,, Nome, Indirizzo)
? Movimenti
Movimenti((KNumero
KNumero,, Descrizione, Data,
Importo, Codice
Codice))
a.a. 2001/2002
7.13
V. Moriggia
Modelli di Base Dati
7.14
©
A
GI
IG
OR
M
V.
IlIl comando
comando Select
Select
(QL)
(QL)
? attiva
02
20
le interrogazioni sulle relazioni:
implementa le operazioni relazionali per
ottenere nuove tabelle virtuali (view
(view).
).
Struttura
Struttura generale
generale del
del comando
comando Select
Select::
SELECT
SELECT ……
……
FROM
FROM ……
……
Definizioni:
invisibile : c’è ma non si vede
virtuale : si vede ma non c’è
a.a. 2001/2002
7.14
V. Moriggia
Modelli di Base Dati
7.15
©
Sintassi
Sintassi di
di Select
Select
A
GI
IG
OR
M
V.
02
20
SELECT nomi delle colonne da elencare
(tutti gli attributi = * )
FROM il nome o i nomi delle tabelle
?
a.a. 2001/2002
SELECT DISTINCT
DISTINCT...
... le righe duplicate nella
tabella risultante vengono ridotte a una.
7.15
V. Moriggia
Modelli di Base Dati
7.16
©
La
La vista
vista dell’intera
dell’intera tabella
tabella
A
GI
IG
OR
M
V.
02
20
SELECT
SELECT **
FROM
NomeTabella;
FROM NomeTabella
NomeTabella;;
a.a. 2001/2002
7.16
V. Moriggia
Modelli di Base Dati
7.17
©
Vista
Vista dell’intera
dell’intera tabella:
tabella: esempi
esempi
A
GI
IG
OR
M
V.
02
20
Elenco di tutte le colonne delle anagrafiche
Vista di Anagrafiche
SQL
SQL
Select *
From Anagrafiche;
Elenco dei movimenti
Vista di Movimenti
SQL
SQL
Select *
From Movimenti;
a.a. 2001/2002
7.17
V. Moriggia
Modelli di Base Dati
7.18
©
A
GI
IG
OR
M
V.
Le
Le operazioni
operazioni relazionali
relazionali nel
nel
linguaggio
linguaggio SQL
SQL
02
20
selezione
? proiezione
? congiunzione
?
Struttura
Struttura generale
generale del
del comando
comando Select
Select::
SELECT
SELECT ……
……
FROM
FROM ……
……
WHERE
WHERE ……
……
Definizioni:
invisibile : c’è ma non si vede
virtuale : si vede ma non c’è
a.a. 2001/2002
7.18
V. Moriggia
Modelli di Base Dati
7.19
©
Sintassi
Sintassi di
di Select
Select
A
GI
IG
OR
M
V.
02
20
SELECT nomi delle colonne da elencare
(tutti gli attributi = * )
FROM il nome o i nomi delle tabelle
WHERE condizione da controllare sui valori delle
righe (anche più condizioni con AND, OR e
NOT).
a.a. 2001/2002
7.19
V. Moriggia
Modelli di Base Dati
Le
Le operazioni
operazioni relazionali
relazionali nel
nel linguaggio
linguaggio SQL
SQL::
7.20
©
A
GI
IG
OR
M
V.
Selezione
Selezione
02
20
SELECT
SELECT **
FROM
FROM NomeTabella
NomeTabella
WHERE
WHERE Condizione
Condizione;;
a.a. 2001/2002
7.20
V. Moriggia
Modelli di Base Dati
7.21
©
Selezione:
Selezione: esempio
esempio
A
GI
IG
OR
M
V.
02
20
Elenco delle anagrafiche di Milano:
Selezione di Anagrafiche per Indirizzo = ‘Milano’
‘Milano’
SQL
SQL
Select *
From Anagrafiche
Where Indirizzo = ’Milano’;
in generale :
SQL
SQL
Select *
From Anagrafiche
Where Indirizzo = [Quale Indirizzo];
a.a. 2001/2002
7.21
V. Moriggia
Modelli di Base Dati
Le
Le operazioni
operazioni relazionali
relazionali nel
nel linguaggio
linguaggio SQL
SQL::
7.22
©
A
GI
IG
OR
M
V.
Proiezione
Proiezione
02
20
SELECT
SELECT Colonna1,
Colonna1, Colonna2,
Colonna2, …
…
FROM
NomeTabella;
FROM NomeTabella
NomeTabella;;
a.a. 2001/2002
7.22
V. Moriggia
Modelli di Base Dati
7.23
©
Proiezione:
Proiezione: esempi
esempi
A
GI
IG
OR
M
V.
02
20
Elenco dei codici e dei nomi delle anagrafiche
Proiezione di Anagrafiche su Codice e Nome
SQL
SQL
Select KCodice
KCodice,
, Nome
From Anagrafiche;
Elenco dei movimenti con data e importo
Proiezione di Movimenti su Data e Importo
SQL
SQL
Select Data, Importo
From Movimenti;
a.a. 2001/2002
7.23
V. Moriggia
Modelli di Base Dati
Le
Le operazioni
operazioni relazionali
relazionali nel
nel linguaggio
linguaggio SQL
SQL::
7.24
©
A
GI
IG
OR
M
V.
Congiunzione
Congiunzione
02
20
SELECT
SELECT **
FROM
FROM Tabella1,
Tabella1,Tabella2
Tabella2
WHERE
Tabella1.Attrib1
Tabella2.Attrib2
WHERE Tabella1.Attrib1==Tabella2.Attrib2;
Tabella2.Attrib2;;
a.a. 2001/2002
7.24
V. Moriggia
Modelli di Base Dati
7.25
©
Congiunzione:
Congiunzione: esempio
esempio
A
GI
IG
OR
M
V.
02
20
Elenco dei movimenti con i dati anagrafici ad essi relativi
Congiunzione di Anagrafiche su Codice e di Movimenti
su Codice
SQL
SQL
Select *
From Anagrafiche, Movimenti
Where Anagrafiche.
Anagrafiche.KCodice
KCodice=
= Movimenti.Codice;
a.a. 2001/2002
7.25
V. Moriggia
Modelli di Base Dati
7.26
©
Uso
Uso di
di più
più operatori
operatori
A
GI
IG
OR
M
V.
02
20
SELECT
SELECTColonna1,
Colonna1, Colonna2,
Colonna2, ...
...
FROM
FROM Tabella1,
Tabella1,Tabella2
Tabella2
WHERE
Tabella1.Attrib1
WHERE Tabella1.Attrib1==Tabella2.Attrib2
Tabella2.Attrib2
AND
Condizione;
AND Condizione
Condizione;;
a.a. 2001/2002
7.26
V. Moriggia
Modelli di Base Dati
7.27
©
Uso
Uso di
di più
più operatori:
operatori: esempio
esempio
A
GI
IG
OR
M
V.
02
20
Elenco dei movimenti con Nome e Importo riferiti alle
anagrafiche aventi un indirizzo prefissato
1.
Selezione di Anagrafiche per Indirizzo = prefissato
2.
Congiunzione della tabella ottenuta su Codice
e di Movimenti su Codice
3.
Proiezione della tabella ottenuta su Nome e Importo
SQL
SQL
Select Nome, Importo
From Anagrafiche, Movimenti
Where Anagrafiche.
Anagrafiche.KCodice
KCodice=
= Movimenti.Codice
And Indirizzo = [Quale Indirizzo];
a.a. 2001/2002
7.27
V. Moriggia
Modelli di Base Dati
7.28
©
Esercizi
Esercizi
A
GI
IG
OR
M
V.
02
20
Anagrafica e Movimento: interrogazioni, specificando le
operazioni relazionali, e codifica nel linguaggio SQL
? Elenco dei movimenti relativi a un codice prefissato.
? Elenco dei movimenti con codice, data e importo.
? Elenco con Nome anagrafico e Numero di registrazione
dei movimenti.
? Data dei movimenti con Indirizzo dell’anagrafica.
? Numero di registrazione dei movimenti riferiti
all’anagrafica avente un Nome prefissato.
? Nome anagrafico, Data e Importo dei movimenti riferiti
a un indirizzo prefissato.
a.a. 2001/2002
7.28