...

concetti fondamentali () - Corso di Laurea in Informatica

by user

on
Category: Documents
17

views

Report

Comments

Transcript

concetti fondamentali () - Corso di Laurea in Informatica
Basi di Dati
SQL-92
Concetti Fondamentali
versione 2.0
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)
G. Mecca – [email protected] – Università della Basilicata
SQL-92 >> Sommario
Concetti Fondamentali
Introduzione
 Creazione ed
eliminazione di bd
 Creazione ed
eliminazione di
tabelle
 Inserimenti di
ennuple

G. Mecca - [email protected] - Basi di Dati

Interrogazioni
clausola SELECT
clausola FROM
clausola WHERE
clausola ORDER BY
metodo di scrittura
Cancellazioni
 Aggiornamenti

2
SQL-92 >> Concetti Fondamentali >> Introduzione
Introduzione

SQL (“Structured Query Language”)
linguaggio per l’interazione con il DBMS
tutte le operazioni vengono specificate in SQL

DDL (“Data Definition Language”)
creazione degli oggetti dello schema

DCL (“Data Control Language”)
controllo degli utenti e delle autorizzazioni

DML (“Data Manipulation Language”)
manipolazione dell’istanza della base di dati
(interrogazioni e aggiornamenti)
G. Mecca - [email protected] - Basi di Dati
3
SQL-92 >> Concetti Fondamentali >> Introduzione
Storia dello Standard
 Prime
implementazioni
IBM System/R 1979 (SEQUEL)
 Primi
prodotti commerciali
IBM SQL/DS, Oracle 1981
 SQL-86
prima versione dello standard, basata sul
dialetto IBM
G. Mecca - [email protected] - Basi di Dati
4
SQL-92 >> Concetti Fondamentali >> Introduzione
Storia dello Standard
 SQL-89
(SQL-1)
vincoli di integrità
livello1 e livello2
 SQL-92
(SQL-2)
entry
intermediate
full
G. Mecca - [email protected] - Basi di Dati
SQL-92, full
SQL-92, intermediate
SQL-92, entry
SQL-89, livello 2
SQL-89, livello 1
5
SQL-92 >> Concetti Fondamentali >> Introduzione
Storia dello Standard
 Standard
collegati
 SQL/CLI
“Call Level Interface” (ODBC), 1995
 SQL/PSM
“Persistent Storage Modules”, 1997
 SQL/OLB
“Object Language Bindings”, 1998
G. Mecca - [email protected] - Basi di Dati
6
SQL-92 >> Concetti Fondamentali >> Introduzione
Storia dello Standard

SQL:1999 (SQL-3)
estensioni “objectrelational”
core: tutto SQL-92
entry, (quasi) tutto
SQL-92 intermediate,
parte di SQL-92 full
packages

Attualmente:
SQL-92, full
SQL-92, intermediate
SQL-92, entry
SQL-89, livello 2
SQL-89, livello 1
SQL:1999, core
lavori su SQL:200x
G. Mecca - [email protected] - Basi di Dati
7
SQL-92 >> Concetti Fondamentali >> Introduzione
Storia dello Standard
 Implementazioni
dello standard
gli standard hanno in alcuni casi inseguito la
tecnologia di mercato
 Corrispondenza
imperfetta
non esiste nessuna implementazione
completa in commercio di SQL-92 full
molti DBMS offrono funzionalità “proprietarie”
e non standard (es: parte di SQL:1999)
problema di portabilità delle applicazioni
G. Mecca - [email protected] - Basi di Dati
8
SQL-92 >> Concetti Fondamentali >> Introduzione
Storia dello Standard
tipico DBMS commerciale

Tipico DBMS sul
mercato oggi
essenzialmente SQL92 intermediate
limitate funzionalità di
SQL-92 full
parte di SQL:1999

SQL-92, full
SQL-92, intermediate
SQL-92, entry
SQL-89, livello 2
SQL-89, livello 1
In questo corso
ci concentriamo su
SQL-92, intermediate
G. Mecca - [email protected] - Basi di Dati
SQL:1999, core
9
SQL-92 >> Concetti Fondamentali >> Introduzione
Le Istruzioni Fondamentali

DDL
creazione della base
di dati
CREATE DATABASE
creazione delle tabelle
CREATE TABLE

DML
inserimento delle
ennuple
INSERT INTO
G. Mecca - [email protected] - Basi di Dati
interrogazioni
SELECT
eliminazione delle
ennuple
DELETE
modifica della ennuple
UPDATE
10
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD
Creazione ed Eliminazione di BD
 Istruzioni
del DDL
 Sintassi
CREATE DATABASE <nome>;
DROP DATABASE <nome>;
Esempio
CREATE DATABASE universita;
DROP DATABASE universita;
G. Mecca - [email protected] - Basi di Dati
11
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD
Creazione ed Eliminazione di BD
 Semantica
CREATE DATABASE
crea una nuova base di dati vuota
l’utente deve essere autorizzato
l’utente diventa il proprietario della bd
DROP DATABASE
elimina una base di dati esistente (anche non
vuota)
l’utente deve essere autorizzato
G. Mecca - [email protected] - Basi di Dati
12
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle
 Istruzioni
del DDL
CREATE TABLE
DROP TABLE
 Sintassi
CREATE TABLE <nome> (<schema>);
DROP TABLE <nome>;
G. Mecca - [email protected] - Basi di Dati
13
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle
 Esempio:
la tabella Professori
CREATE TABLE Professori (
cod char(4) PRIMARY KEY,
cognome varchar(20) NOT NULL,
nome varchar(20) NOT NULL,
qualifica char(15),
facolta char(10) );
DROP TABLE Professori;
G. Mecca - [email protected] - Basi di Dati
14
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle

Esempio: la tabella Esami
CREATE TABLE Esami (
studente integer
REFERENCES Studenti(matr)
ON DELETE cascade
ON UPDATE cascade,
corso char(3)
REFERENCES Corsi(cod),
voto integer,
lode bool,
CHECK (voto>=18 and voto<=30),
CHECK (not lode or voto=30),
PRIMARY KEY (studente, corso));
G. Mecca - [email protected] - Basi di Dati
15
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle
 <schema>
una o più definizioni di attributo
zero o più definizioni di vincoli di tabella
 Definizione
di attributo
<nomeattributo> <tipo> [<vincoli di colonna>]
 Definizioni
di vincoli di tabella
normalmente vincoli relativi a più attributi
G. Mecca - [email protected] - Basi di Dati
16
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle

<nomeattributo>
identificatore

<tipo>
INT, INTEGER
REAL, FLOAT
DECIMAL(lung,dec)
DOUBLE PRECISION
CHAR(n),
CHARACTER(n)
VARCHAR(n)
G. Mecca - [email protected] - Basi di Dati
LONG VARCHAR,
TEXT
BOOLEAN, BOOL
DATE
TIME
TIMESTAMP
BINARY(n), BIT(n)
VARBINARY(n),
VARBIT(n)
LONG VARBINARY,
BLOB
17
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle
 Vincoli
di colonna
PRIMARY KEY
UNIQUE
NOT NULL
REFERENCES <chiave della tabella dest.>
[ON update CASCADE]
[ON delete CASCADE]
CHECK (<espressione>)
G. Mecca - [email protected] - Basi di Dati
18
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle
 Vincoli
di tabella (su più attributi)
PRIMARY KEY (<lista attributi>)
UNIQUE (<lista attributi>)
FOREIGN KEY (<lista attributi>)
REFERENCES <chiave esterna>
[ON update CASCADE]
[ON delete CASCADE]
CHECK (<espressione>)
G. Mecca - [email protected] - Basi di Dati
19
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
Creazione ed Eliminazione di Tabelle
 Semantica
CREATE TABLE
crea una nuova tabella vuota secondo lo schema
specificato
l’utente deve essere autorizzato
l’utente diventa il proprietario della tabella
attenzione ai vincoli di riferimento
DROP TABLE
elimina una tabella esistente
l’utente deve essere autorizzato
G. Mecca - [email protected] - Basi di Dati
20
SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle
CREATE TABLE Professori (
CREATE TABLE Tutorato (
cod char(4) PRIMARY KEY,
studente integer
cognome varchar(20) NOT NULL,
REFERENCES Studenti(matr),
nome varchar(20) NOT NULL,
tutor integer
qualifica char(15),
REFERENCES Studenti(matr),
facolta char(10) );
PRIMARY KEY (studente,tutor));
CREATE TABLE Esami (
CREATE TABLE Studenti (
studente integer
matr integer PRIMARY KEY,
REFERENCES Studenti(matr)
cognome varchar(20) NOT NULL,
ON DELETE cascade
nome varchar(20) NOT NULL,
ON UPDATE cascade,
ciclo char(20),
corso char(3)
anno integer,
REFERENCES Corsi(cod),
relatore char(4)
voto integer,
REFERENCES Professori(cod)
lode bool,
);
CHECK (voto>=18 and voto<=30),
CHECK (not lode or voto=30),
CREATE TABLE Corsi (
PRIMARY KEY (studente, corso));
cod char(3) PRIMARY KEY,
titolo varchar(20) NOT NULL, CREATE TABLE Numeri (
ciclo char(20),
professore char(4)
docente char(4)
REFERENCES Professori(cod),
REFERENCES Professori(cod)
numero char(9),
);
PRIMARY KEY (professore,numero));
G. Mecca - [email protected] - Basi di Dati
21
SQL-92 >> Concetti Fondamentali >> Inserimenti
Inserimenti
 Istruzione
del DML
INSERT
 Sintassi
INSERT INTO <tabella> VALUES (<valori>);
 Semantica
inserimento della ennupla nella tabella
corrispondenza ordinata tra valori e attributi
(notazione posizionale)
G. Mecca - [email protected] - Basi di Dati
22
SQL-92 >> Concetti Fondamentali >> Inserimenti
Inserimenti
 Esempi:
INSERT INTO Professori VALUES
(‘FT’, ‘Totti’, ‘Francesco’, ‘ordinario’,
‘Ingegneria’);
INSERT INTO Studenti VALUES
(111, ‘Rossi’, ‘Mario’, ‘laurea tr.’, 3, null);
INSERT INTO Corsi VALUES
(‘PR1’, ‘Programmazione 1’, ‘laurea tr.’, ‘FT’);
G. Mecca - [email protected] - Basi di Dati
23
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
 Istruzione
del DML
SELECT
sintassi concreta per specificare operatori
dell’algebra
 Filosofia
parzialmente dichiarativa
si specificano gli operatori da applicare, non
l’ordine in cui devono essere applicati
l’ottimizzatore sceglie la strategia ottima
G. Mecca - [email protected] - Basi di Dati
24
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
 Tre
“clausole” principali (nucleo)
SELECT, FROM, WHERE
 SELECT
proiezioni, ridenominazioni, elimin. duplicati
 FROM
tabelle, join, prodotti cartesiani, alias
 WHERE
selezioni
G. Mecca - [email protected] - Basi di Dati
25
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Studenti
della laurea triennale di anni
successivi al primo”
Risultato =
s ciclo=‘laurea tr.’ AND anno>1 (Studenti)
SELECT *
FROM Studenti
WHERE ciclo=‘laurea tr.’ AND anno>1;
G. Mecca - [email protected] - Basi di Dati
26
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi

“Matricola e cognome degli studenti che hanno
sostenuto l’esame di informatica teorica”
Risultato = p matricola, cognome ( s titolo=‘Inform. t.’ (
Studenti
matr=studente Esami
cod=corso Corsi ))
SELECT matricola, cognome
FROM Studenti JOIN Esami ON matr=studente
JOIN Corsi ON cod=corso
WHERE titolo=‘Inform. t.’;
G. Mecca - [email protected] - Basi di Dati
27
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
 Per
sistematizzare
partiamo dalla forma standard dell’algebra
relazionale (nella versione più generale)
mostriamo come le clausole della SELECT si
possono mettere in corrispondenza con gli
operatori della forma standard
questo ci suggerirà anche un metodo per
scrivere le interrogazioni SQL
G. Mecca - [email protected] - Basi di Dati
28
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
 Forma
standard dell’algebra
una o più sottointerrogazioni
correlate da operatori insiemistici
 Sottointerrogazioni
strategia a: prodotti cartesiani tra le tabelle
(con eventuali alias)
strategia b: join tra le tabelle (con eventuali
alias)
>>
G. Mecca - [email protected] - Basi di Dati
29
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
 Sottointerrogazioni
(Continua)
selezioni
proiezioni (con funzioni aggregative)
eliminazione di duplicati (DISTINCT)
ridenominazioni
ordinamenti finali (ORDER BY)
G. Mecca - [email protected] - Basi di Dati
30
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
Sottointerrogazione
ORDER BY
r
DISTINCT
p
s
TABELLE, con X oppure
ed ev. ALIAS
U oppure ∩ oppure –
Sottointerrogazione
G. Mecca - [email protected] - Basi di Dati
31
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
 Interrogazioni
SQL
una o più sottointerrogazioni
con eventuali operatori insiemistici
 Per
ogni sottointerrogazione
SELECT: proiezioni, ridenominazioni, distinct
FROM: prodotti cartesiani o join, alias
[WHERE]: selezioni (opzionale)
[ORDER BY]: ordinamenti (opzionale)
G. Mecca - [email protected] - Basi di Dati
32
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
Sottointerrogazione
Sottointerrogazione
ORDER BY
r
SELECT
DISTINCT
p
s
FROM
tabelle con X o
ORDER BY
WHERE
U oppure ∩ oppure –
UNION, INTERSECT, EXCEPT
Sottointerrogazione
Sottointerrogazione
G. Mecca - [email protected] - Basi di Dati
33
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Studenti
della laurea triennale di anni
successivi al primo”
Risultato =
s ciclo=‘laurea tr.’ AND anno>1 (Studenti)
SELECT *
FROM Studenti
WHERE ciclo=‘laurea tr.’ AND anno>1;
NOTA: le clausole vanno scritte nell’ordine in cui compaiono
prima SELECT, poi FROM, poi WHERE, poi ORDER BY
G. Mecca - [email protected] - Basi di Dati
34
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi

“Matricola e cognome degli studenti che hanno
sostenuto l’esame di informatica teorica”
Risultato = p matricola, cognome ( s titolo=‘Inform. t.’ (
Studenti
matr=studente Esami
cod=corso Corsi ))
SELECT matricola, cognome
FROM Studenti JOIN Esami ON matr=studente
JOIN Corsi ON cod=corso
WHERE titolo=‘Inform. t.’;
G. Mecca - [email protected] - Basi di Dati
35
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola FROM
 Serve
a specificare
le tabelle da cui prelevare i dati
gli eventuali prodotti cartesiani
gli eventuali join
gli eventuali alias
 Prodotti
cartesiani: sintassi
FROM R, S, T AS V …
es: FROM Professori, Numeri
G. Mecca - [email protected] - Basi di Dati
36
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola FROM
 Join:
Sintassi
FROM S JOIN R ON S.A=R.B JOIN T AS V..
es: FROM Professori JOIN Numeri ON
cod=professore
 Semantica
applicazione degli operatori corrispondenti
costruisce la tabella unica a cui applicare gli
operatori successivi
G. Mecca - [email protected] - Basi di Dati
37
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola WHERE
 Serve
a specificare
le selezioni
 Sintassi
WHERE <condizione>
 Dove
<condizione> è una condizione composta di
sottocondizioni di selezione, collegate con
connettivi booleani (AND, OR, NOT)
sintassi identica alle condizioni dell’algebra
G. Mecca - [email protected] - Basi di Dati
38
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola WHERE
 Nota
possono comparire solo attributi di tabelle
che compaiono nella clausola FROM
 Esempio
FROM Professori
WHERE qualifica=‘ordinario’
AND facolta IS NOT NULL
 Semantica
applica le selezioni alle tabelle della FROM
G. Mecca - [email protected] - Basi di Dati
39
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola SELECT
 Serve
a specificare
proiezioni
funzioni aggregative
ridenominazioni
eliminazione di duplicati
 Nota
anche in questo caso è possibile specificare
solo attributi di tabelle che compaiono nella
clausola FROM
G. Mecca - [email protected] - Basi di Dati
40
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola SELECT
 Sintassi
SELECT [DISTINCT] <attributi>
 Dove
<attributi> è una lista di nomi di attributo
con eventuali ridenominazioni nella forma
<vecchioNome> AS <nuovoNome>
 Semantica
applicare gli operatori corrispondenti alle
tabelle della FROM
G. Mecca - [email protected] - Basi di Dati
41
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola SELECT
 Esempi
SELECT cognome, nome
FROM Professori
SELECT DISTINCT cognome, nome
FROM Professori
SELECT cognome AS cognomeProf,
nome AS nomeProf
FROM Professori
G. Mecca - [email protected] - Basi di Dati
42
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola SELECT
 Nota
la clausola SELECT è obbligatoria
che succede se non ci sono proiezioni e
ridenominazioni ?
 SELECT
*
non è necessario effettuare nè proiezioni nè
ridenominazioni
G. Mecca - [email protected] - Basi di Dati
43
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola ORDER BY
 Serve
a specificare
ordinamenti finali
 Sintassi
ORDER BY <attributi>
 Dove
<attributi> è una lista di attributi di tabelle che
compaiono nella clausola FROM
G. Mecca - [email protected] - Basi di Dati
44
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Clausola ORDER BY
 Esempio
SELECT *
FROM Studenti
ORDER BY cognome, annoCorso
 Normalemente:
l’ordinamento è crescente
 Ordinamento
decrescente: DESC
ORDER BY cognome, annoCorso DESC
G. Mecca - [email protected] - Basi di Dati
45
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognomi
e nomi degli studenti”
ElencoNomi = DISTINCT (pcognome, nome (Studenti))
SELECT DISTINCT cognome, nome
FROM Studenti;
G. Mecca - [email protected] - Basi di Dati
46
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognomi
e nomi degli studenti, in ordine
alfabetico”
ElencoNomi = ORDER BY cognome, nome (
DISTINCT (p cognome, nome (Studenti)))
SELECT DISTINCT cognome, nome
FROM Studenti
ORDER BY cognome, nome;
G. Mecca - [email protected] - Basi di Dati
47
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Voto
medio riportato negli esami”
Risultato = p AVG(voto) (Esami)
SELECT AVG(voto)
FROM Esami;
G. Mecca - [email protected] - Basi di Dati
48
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognomi,
nomi e numeri di telefono dei
professori” (strategia a)
ProfessoriENumeri = p cognome, nome, numero (
s cod=professore (
Professori X Numeri ))
SELECT cognome, nome, numero
FROM Professori, Numeri
WHERE cod=professore;
G. Mecca - [email protected] - Basi di Dati
49
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognomi,
nomi e numeri di telefono dei
professori” (strategia b)
ProfessoriENumeri =
p cognome, nome, numero (
Professori
cod=professore
Numeri)
SELECT cognome, nome, numero
FROM Professori JOIN Numeri
ON cod=professore;
G. Mecca - [email protected] - Basi di Dati
50
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognome
e nome delle persone”
Risultato = rcognome AS cognomePersona, nome AS nomePersona (
pcognome, nome (Professori))
U
pcognome, nome (Studenti)
SELECT cognome AS cognomePersona, nome AS nomePersona
FROM Professori
UNION
SELECT cognome, nome
FROM Studenti;
G. Mecca - [email protected] - Basi di Dati
51
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognome
e nome dei professori ordinari
che non supervisionano tesi triennali”
Risultato = r cognome AS cognomeProf, nome AS nomeProf (
p cognome, nome (
s qualifica = ‘Ordinario’ (Professori))
–
p cognome, nome (
s ciclo = ‘laurea tr.’ (
Studenti
G. Mecca - [email protected] - Basi di Dati
relatore = cod
Professori ))
52
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognome
e nome dei professori ordinari
che non supervisionano tesi triennali”
SELECT cognome AS cognomeProf, nome AS nomeProf
FROM Professori
WHERE qualifica=‘ordinario’
EXCEPT
SELECT cognome, nome
FROM Studenti JOIN Professori ON relatore=cod
WHERE ciclo=‘laurea tr.’;
G. Mecca - [email protected] - Basi di Dati
53
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Cognomi
e nomi degli studenti che
all’esame di Programmazione hanno
riportato un voto superiore a quello dei
loro tutor”
 Tabelle coinvolte
Studenti, Esami
Tutorato, Esami AS EsamiTutor
G. Mecca - [email protected] - Basi di Dati
54
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Studenti
e tutor” (continua)
Risultato = p cognome, nome (
s Esami.corso=‘Pr1’ AND EsamiTutor.corso=‘Pr1’ AND Esami.voto > EsamiTutor.voto (
Studenti
matr=studente
Esami
matr=Tutorato.studente
Tutorato
Tutorato.tutor=EsamiTutor.studente
G. Mecca - [email protected] - Basi di Dati
(Esami AS EsamiTutor)))
55
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Esempi
 “Studenti
e tutor” (continua)
SELECT cognome, nome
FROM Studenti JOIN Esami ON matr=studente
JOIN Tutorato ON matr=Tutorato.studente
JOIN Esami AS EsamiTutor
ON Tutorato.tutor = EsamiTutor.studente
WHERE Esami.corso=‘Pr1’ AND EsamiTutor.corso=‘Pr1’
AND Esami.voto > EsamiTutor.voto;
G. Mecca - [email protected] - Basi di Dati
56
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni
 Nota
una interrogazione particolare
SELECT * FROM R;
es: SELECT * FROM Corsi;
preleva i dati dalla tabella R senza applicare
nessun operatore
è il modo con cui in un DBMS SQL si
visualizza interattivamente il contenuto di una
tabella
G. Mecca - [email protected] - Basi di Dati
57
SQL-92 >> Concetti Fondamentali >> Interrogazioni
Interrogazioni: Metodo di Scrittura
 Scrivere
l’interrogazione in algebra
relazionale utilizzando la forma standard
 Tradurre gli operatori nella sintassi di SQL
 Bisogna scegliere tra
strategia a: prodotti cartesiani
strategia b: join
in generale è più efficiente la seconda
G. Mecca - [email protected] - Basi di Dati
58
SQL-92 >> Concetti Fondamentali >> Cancellazioni
Cancellazioni
 Istruzione
del DML
DELETE
 Sintassi
DELETE FROM <tabella>
[<clausola WHERE>];
<clausola WHERE>: identica a quella vista
 Semantica
elimina dalla tabella tutte le ennuple (che
soddisfano la condizione se è specificata)
G. Mecca - [email protected] - Basi di Dati
59
SQL-92 >> Concetti Fondamentali >> Cancellazioni
Cancellazioni
 Esempi:
DELETE FROM Numeri;
DELETE FROM Studenti WHERE matr=111;
DELETE FROM Corsi
WHERE ciclo=‘laurea tr.’ AND
docente=‘FT’;
G. Mecca - [email protected] - Basi di Dati
60
SQL-92 >> Concetti Fondamentali >> Aggiornamenti
Aggiornamenti
 Istruzione
del DML
UPDATE
 Sintassi
UPDATE <tabella> SET <attributo>=<espressione>
[<clausola WHERE>]
 Semantica
aggiorna il valore dell’attributo di tutte le
ennuple (che soddisfano la condizione se è
specificata)
G. Mecca - [email protected] - Basi di Dati
61
SQL-92 >> Concetti Fondamentali >> Aggiornamenti
Aggiornamenti

Esempi:
UPDATE Studenti SET anno=anno+1;
UPDATE Studenti SET matr=11111
WHERE matr=111;
UPDATE Corsi SET docente=‘VC’
WHERE ciclo=‘laurea tr.’ AND
docente=‘FT’;
G. Mecca - [email protected] - Basi di Dati
62
SQL-92 >> Sommario
Concetti Fondamentali
Introduzione
 Creazione ed
eliminazione di bd
 Creazione ed
eliminazione di
tabelle
 Inserimenti di
ennuple

G. Mecca - [email protected] - Basi di Dati

Interrogazioni
clausola SELECT
clausola FROM
clausola WHERE
clausola ORDER BY
metodo di scrittura
Cancellazioni
 Aggiornamenti

63
SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio
CREATE TABLE Professori (
CREATE TABLE Tutorato (
cod char(4) PRIMARY KEY,
studente integer
cognome varchar(20) NOT NULL,
REFERENCES Studenti(matr),
nome varchar(20) NOT NULL,
tutor integer
qualifica char(15),
REFERENCES Studenti(matr),
facolta char(10) );
PRIMARY KEY (studente,tutor));
CREATE TABLE Esami (
CREATE TABLE Studenti (
studente integer
matr integer PRIMARY KEY,
REFERENCES Studenti(matr)
cognome varchar(20) NOT NULL,
ON DELETE cascade
nome varchar(20) NOT NULL,
ON UPDATE cascade,
ciclo char(20),
corso char(3)
anno integer,
REFERENCES Corsi(cod),
relatore char(4)
voto integer,
REFERENCES Professori(cod)
lode bool,
);
CHECK (voto>=18 and voto<=30),
CHECK (not lode or voto=30),
CREATE TABLE Corsi (
PRIMARY KEY (studente, corso));
cod char(3) PRIMARY KEY,
titolo varchar(20) NOT NULL, CREATE TABLE Numeri (
ciclo char(20),
professore char(4)
docente char(4)
REFERENCES Professori(cod),
REFERENCES Professori(cod)
numero char(9),
);
PRIMARY KEY (professore,numero));
G. Mecca - [email protected] - Basi di Dati
64
SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio
Corsi
T
codice CHAR(3)
PK
Esami
T
titolo VARCHAR(20)
Numeri
T
corso CHAR(3)
PK, FK
ciclo CHAR(20)
numero CHAR(9)
PK
studente INTEGER
PK, FK
docente CHAR(4)
docente CHAR(4)
PK, FK
FK
voto INTEGER
lode BOOL
Professori
T
cod CHAR(4)
PK
cognome VARCHAR(20)
Studenti
T
matr INTEGER
PK
cognome VARCHAR(20)
nome VARCHAR(20)
qualifica CHAR(15)
facolta CHAR(10)
nome VARCHAR(20)
ciclo CHAR(20)
anno INTEGER
relatore CHAR(4)
FK
G. Mecca - [email protected] - Basi di Dati
Tutorato
T
studente INTEGER
PK, FK
tutor INTEGER
PK, FK
65
SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio
Professori
Studenti
Corsi
cod
cognome
nome
qualifica
facolta
FT
Totti
Francesco
ordinario
Ingegneria
CV
Vieri
Christian
associato
Scienze
ADP
Del Piero
Alessandro
supplente
null
matr
cognome
nome
ciclo
anno
relatore
111
Rossi
Mario
laurea tr.
1
null
222
Neri
Paolo
laurea tr.
2
null
333
Rossi
Maria
laurea tr.
1
null
444
Pinco
Palla
laurea tr.
3
FT
77777
Bruno
Pasquale
laurea sp.
1
FT
88888
Pinco
Pietro
laurea sp.
1
CV
cod
titolo
ciclo
docente
PR1
Programmazione I
laurea tr.
FT
ASD
Algoritmi e Str. Dati
laurea tr.
CV
INFT
Informatica Teorica
laurea sp.
ADP
G. Mecca - [email protected] - Basi di Dati
66
SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio
Tutorato
Esami
studente
tutor
professore
numero
111
77777
FT
0971205145
222
77777
FT
347123456
333
88888
VC
0971205227
444
88888
ADP
0971205363
ADP
338123456
Numeri
studente
corso
voto
lode
111
PR1
27
false
222
ASD
30
true
111
INFT
24
false
77777
PR1
21
false
77777
ASD
20
false
88888
ASD
28
false
88888
PR1
30
false
88888
INFT
30
true
G. Mecca - [email protected] - Basi di Dati
67
Termini della Licenza
Termini della Licenza

This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California
94305, USA.

Questo lavoro viene concesso in uso secondo i termini della
licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere
una copia della licenza, è possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una
lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way,
Stanford, California 94305, USA.
G. Mecca - [email protected] - Basi di Dati
68
Fly UP