53
Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Embed Size (px)

Citation preview

Page 1: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Sistemi per il recupero delle informazioni

RIASSUNTO: IL LINGUAGGIO SQL

Page 2: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

INTRODUZIONE

Le interrogazioni devono essere scritte in un linguaggio formale con caratteristiche tali da renderlo adatto ad esprimere interrogazioni sulla BD, e da essere facilmente interpretato dal sistema. Il linguaggio generalmente usato si chiama SQL (Structured Query Language) È un linguaggio di interrogazione e manipolazione della base dati e delle informazioni in essa contenute

Creato negli anni ’70 presso IBM , inizialmente solo come linguaggio di interrogazione. Ora è linguaggio di riferimento per DataBase relazionali. Standardizzato grazie al lavoro di ISO (international standard organization) e ANSI (american national standard institute)

Page 3: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

CREAZIONE DI TABELLE

Per definire una relazione (detta tabella nella terminologia SQL), si usa il comando “create table”: definisce uno schema di relazione e ne crea un’istanza vuota; specifica attributi, domini e vincoli; ad esempio

Libri(titolo, autore, codice_isbn)

Page 4: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

CREATE TABLE, esempio

CREATE TABLE Impiegato(Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL,

Cognome CHAR(20) NOT NULL, Dipart CHAR(15),Stipendio NUMERIC(9) DEFAULT 0, FOREIGN KEY(Dipart) REFERENCES Dipartimento(NomeDip),

UNIQUE (Cognome,Nome) )

castella
sottolineare i tipiEvidenziare il significato dei colori
Page 5: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Domini

Domini elementari (predefiniti) Carattere: singoli caratteri o stringhe, anche di lunghezza variabile Bit: singoli booleani (flag) o stringhe di bit Numerici:

esatti (es: numeric, decimal) approssimati (es: float)

Data, ora, intervalli di tempo – UTC (Universal time coordinate) Introdotti in SQL:1999:

Boolean BLOB, CLOB (Binary/Character large object): per grandi immagini e testi

Domini definiti dall'utente (semplici, ma riutilizzabili)

Page 6: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

VINCOLI

A ogni attributo possono essere associati dei vincoli

■ default: indica il valore che un attributo deve avere quando viene inserito un record che, in corrispondenza di quell’attributo non ha assegnato alcun valore

■ not null: i valori inseriti in quel campo devono essere diversi non nulli■ Es: Cognome CHAR(20) not null

■ unique: il valore può comparire una volta sola

■ primary key: chiave primaria, (una sola, implica NOT NULL)

Page 7: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

VINCOLI

■ Il valore di un attributo dichiarato NOT NULL va obbligatoriamente specificato quando si aggiunge un’ennupla alla relazione.

■ Un altro vincolo è l’eventuale chiave primaria dichiarata con l’opzione primary key. Gli attributi della chiave primaria non possono assumere valori NULL.

Quando nella definizione di una tabella sono dichiarati dei vincoli il sistema che gestisce la BD controlla che le operazioni che modificano la tabella inserendo nuove ennuple o modificando i valori di attributi non violino i vincoli dichiarati. Se un vincolo può essere violato l’operazione non viene eseguita e viene segnalata una condizione di errore

Page 8: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

CHIAVI ESTERNE

Vediamo come introdurre una chiave esterna attraverso il comando Foreign Key

create table studenti (nome char(20),matricola char(8) not

null,provincia char(2),anno_nascita smallint,primary key

(matricola) foreign key (codice) references CDL,

on delete no action,)

create table CDL (facoltà char(20),nome char(20) not null,primary key (codice),)

Page 9: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

CHIAVI ESTERNEQuando si dichiara un vincolo di chiave esterna, il sistema fa i seguenti controlli:

1. quando si inserisce un’ennupla nella tabella Studenti, o quando si modifica il campo chiave esterna, il valore della chiave esterna deve essere presente in un’ennupla della tabella CDL;

2. quando si elimina un’ennupla dalla tabella CDL, se il valore della sua chiave primaria è usato come valore di una chiave esterna di un’ennupla della tabella Studenti, allora sono possibili tre scelte:

a. on delete no action: per proibire la cancellazione dell’ennupla da CDL. Questa opzione vale anche quando si modifica il valore della chiave primaria di CDL;b. on delete cascade, per eliminare sia l’ennupla da CDL che tutte le ennuple di Studenti che usano il valore della chiave primaria dell’ennupla che si elimina;c. on delete set null, per eliminare l’ennupla da CDL e porre a null il valore della chiave esterna di tutte le ennuple di Studenti che usano il valore della chiave primaria dell’ennupla che si elimina.

Page 10: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

RECUPERO DEI DATI: IL COMANDO SELECT

OBIETTIVI: Scrivere una query in linguaggio SQL selezionare ed elencare tutte le righe e le colonne di una tabella selezionare ed elencare determinate colonne di una tabella selezionare ed elencare le colonne di più tabelle

Anche se la parola query può essere tradotta in interrogazione o domanda, una query SQL non è necessariamente una domanda, può essere un comando per svolgere una delle seguenti operazioni: creare o cancellare una tabella inserire, modificare o cancellare campi ricercare informazioni specifiche in più tabelle e restituire i risultati in un

particolare ordine modificare i parametri di protezione di un database

Page 11: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

STRUTTURA DEL COMANDO

Una interrogazione (query) SQL agisce sulle relazioni definite nella base di dati, e restituisce come risultato una relazione. questa viene in generale visualizzata sul monitor, oppure stampata; può

anche essere memorizzata nella base di dati o può essere utilizzata in altre interrogazioni.

Nei casi più semplici una interrogazione SQL deve specificare quali sono le informazioni che interessano in quali relazioni si trovano quali proprietà devono avere

Page 12: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

SELECT

Quali sono le informazioni che interessano

SELECT Attributo1,Attributo2,...

è presente in ogni interrogazione e definisce lo schema della relazione risultato. Più avanti vedremo che può avere una forma più complessa.

Esempio:SELECT Titolo, CasaEd

significa che ci interessano il titolo e la casa editrice

Le singole colonne verranno elencate nello stesso ordine indicato.

Il comando Select in SQL equivale all’operazione di proiezione dell’algebra relazionale.

Page 13: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

FROM

In quali relazioni si trovano

FROM Relazione1,Relazione2,...

è presente in ogni interrogazione e specifica quali relazioni occorre visitare per ottenere il risultato.

Esempio:FROM Catalogo

significa che per estrarre le informazioni che interessano occorre prendere in esame la relazione Catalogo.

Per selezionare dati da un’altra tabella è sufficiente modificare la clausola FROM

Page 14: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

WHERE

Quali proprietà devono essere soddisfatte

WHERE Condizione

La condizione è espressa sugli attributi delle relazioni specificate nella clausola FROM.

Può non essere presente, quando non si vogliono specificare condizioni.

Esempio:

WHERE AnnoEd = 2001

significa che interessano informazioni relative ai libri editi nel 2001.

Page 15: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Riassumendo…

Riepilogando la forma generale di un interrogazione SQL è, nei casi più semplici, la seguente:

SELECT Attributo1,Attributo2,...

FROM Relazione1,Relazione2,...

[WHERE Condizione]

Le parole in maiuscolo sono parole riservate del linguaggio SQL, sono fisse e specificano le clausole dell’ interrogazione; la clausola WHERE può mancare

Le parole in minuscolo sono variabili, e rappresentano le relazioni, gli attributi, le condizioni che riguardano la specifica interrogazione

Page 16: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Selezione e proiezione

Nome e reddito delle persone con meno di trenta anni

PROJNome, Reddito(SELEta<30(Persone))

SELECT Nome, RedditoFROM PersoneWHERE Eta < 30

Nome Età

Persone

Reddito

Andrea 27

Maria 55

Anna 50

Filippo 26

Luigi 50

Franco 60

Olga 30

Sergio 85

Luisa 75

Aldo 25

21

42

35

30

40

20

41

35

87

15

Page 17: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Nome Età

Persone

Reddito

Andrea 27 21

Maria 55 42

Anna 50 35

Filippo 26 30

Luigi 50 40

Franco 60 20

Olga 30 41

Sergio 85 35

Luisa 75 87

Aldo 25 15

Andrea 27 21

Aldo 25 15

Filippo 26 30

Andrea 27 21

Aldo 25 15

Filippo 26 30

21

15

30

Reddito

Page 18: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Selezione, senza proiezione

Nome, età e reddito delle persone con meno di trenta anni

SELEta<30(Persone)SELECT *FROM PersoneWHERE Eta < 30

Proiezione, senza selezione

Nome e reddito di tutte le persone

PROJNome, Reddito(Persone)

SELECT Nome, Reddito FROM Persone

Page 19: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

EVITARE I DUPLICATI

Si consideri la seguente interrogazione

SELECT CasaEdFROM Catalogo

Se una casa editrice è presente nel catalogo con 1000 libri, il suo nome comparirà 1000 volte nel risultato

Se vogliamo evitare che ciò avvenga, scriveremo

SELECT DISTINCT CasaEdFROM Catalogo

che ha come risultato le case editrici presenti nel catalogo, rappresentate

una sola volta

Page 20: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESPRESSIONI

La definizione di espressione è semplice: un’espressione restituisce un valore

Nella seguente istruzione, NOME, INDIRIZZO, TELEFONO E RUBRICA sono espressioni:

SELECT NOME, INDIRIZZO, TELEFONO, RUBRICAFROM RUBRICA;

NOME è

La seguente espressione:WHERE NOME = ‘ROSSI’

contiene una condizione di una espressione booleana. Questa condizione potrà essere TRUE (vera) o FALSE (falsa) rispettivamente se la colonna NOME contiene ROSSI oppure no.

Page 21: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

TABELLA DI VERITA’

Gli operatori booleani rispettano le seguenti tabelle di verità:

true and true = true

true or true = true

not true = false

true and false = false

true or false = true

not false = true

false and false = false

false or false = false

Page 22: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

LA CLAUSOLA WHERE

SELECT Titolo, CasaEdFROM Catalogo

WHERE Anno = 2001 and CasaEd = “Einaudi”

SELECT Titolo, CasaEdFROM Catalogo

WHERE Anno = 2001 or CasaEd = “Einaudi”

SELECT Titolo, CasaEdFROM Catalogo

WHERE Anno = 2000 and CasaEd <> “Feltrinelli”

Page 23: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESEMPIO

SELECT CasaEd, AnnoFROM Catalogo

WHERE Titolo = “L’amante” andAnno = (SELECT max(Anno) FROM Catalogo WHERE Titolo =

“L’amante” )

Viene dapprima calcolata la SELECT tra parentesi, ed il suo risultato viene utilizzato per valutare la condizione; La SELECT esterna restituisce come risultato la CasaEd e L’Anno della più recente edizione dell’ Amante presente nel Catalogo

In questo esempio è stato fatto uso di una struttura detta SOTTOSELECT , o SELECT annidata. Questa ha lo scopo di estrarre dal DB un valore da utilizzare in una espressione. Si osservi che la Sottoselect ha come risultato un singolo valore, altrimenti il confronto non si può effettuare

Page 24: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

E’ un potente gruppo di strumenti a base della conoscenza del linguaggio SQL

Gli operatori sono gli elementi utilizzati all’interno delle espressioni per specificare le condizioni necessarie a caricare i dati.

Possono essere divisi nei seguenti gruppi:

aritmetici di confronto (<, <=, >, >=, !=) di carattere (es. LIKE “%A%”) logici (AND, OR, NOT) di insieme

GLI OPERATORI

Page 25: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Interrogazioni su più relazioni

Nella clausola FROM possono essere presenti più relazioni. Ciò è necessario quando le informazioni per eseguire l’interrogazione sono distribuite su relazioni diverse, vale a dire: quando gli attributi presenti nella clausola SELECT o nella clausola WHERE appartengono a relazioni diverse

Si consideri il seguente schema relazionale

Film(CodFilm,Titolo,Regista,Anno)

Attori(CodFilm*, Attore)

e supponiamo di volere i titoli dei film in cui recita C. Eastwood. L’attributo Titolo è nella relazione Film mentre l’attributo Attore è nella relazione Attori. Occorre pertanto visitare entrambe le relazioni

Page 26: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESEMPIO - I

.Supponiamo di avere le seguenti istanze di relazione:

Page 27: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESEMPIO - II

Il DBMS esegue la seguente procedura: Viene costruita una relazione concatenando le ennuple di Film e di

Attori che sono in associazione (tali che CodFilm=CodFilm*)

Vengono prese in considerazione solo le ennuple in cui l’attributo Attore ha valore C.Eastwood.

Page 28: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESEMPIO - III

Viene prelevato l’attributo Titolo

Questa interrogazione in SQL si scrive:SELECT Titolo

FROM Film, AttoriWHERE Film.CodFilm = Attori.CodFilm

and Attore = “C.Eastwood”

dove Film.CodFilm ed Attori.CodFilm rappresentano il valore di CodFilm nella relazione Film e nella relazione Attori rispettivamente.

La condizione Film.CodFilm = Attori.CodFilm serve ad esprimere il collegamento tra le ennuple di Film e quelle di Attori. Solo in questo modo C.Eastwood sarà associato ad un film in cui recita.

Page 29: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESEMPIO - IV

Per motivi di chiarezza e per evitare ambiguità, è opportuno specificare, per ogni attributo, la relazione cui appartiene , con la notazione Relazione.Attributo. Pertanto l’interogazione precedente diventa

SELECT Film.TitoloFROM Film, Attori

WHERE Film.CodFilm = Attori.CodFilmand Attori.Attore = “C.Eastwood”

Per motivi di brevità è opportuno assegnare nella clausola FROM un nome abbreviato alle relazioni, da utilizzare nelle altre clausole dell’interrogazione:

SELECT F.TitoloFROM Film F, Attori A

WHERE F.CodFilm = A.CodFilmand A.Attore = “C.Eastwood”

Page 30: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

JOIN

Sottolineiamo il fatto che fra le due relazioni deve esistere un collegamento (una chiave esterna in una relazione, chiave primaria nell’altra), e che nella clausola WHERE dell’interrogazione deve essere esplicitato tale collegamento. Osserviamo che nella clausola FROM può essere presente un qualunque numero di relazioni, purché queste siano collegate tra di loro, e nella clausola WHERE siano specificati tutti i collegamenti.

L’operazione che associa le ennuple di due relazioni (ad es. le ennuple di Film con quelle di Attori) è quella di join, e la condizione di eguaglianza tra la chiave esterna di una relazione e la chiave primaria di un’altra (ad es Film.CodFilm = Attori.CodFilm) è detto predicato di join.

Page 31: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESEMPIO DIFFICILE

Si consideri lo schema relazionale:

FILM(CodiceDVD, Titolo, Regista, Anno)

ATTORI(Nome, Nazionalità)

RECITA(CodiceDVD*, Nome*, Personaggio)

DVD(Collocazione, CodiceDVD*, DataNoleg, CodiceCliente*)

CLIENTI(CodiceCliente, Cognome, Nome, Indirizzo, Telefono)

e si voglia estrarre Cognome e Nome dei Clienti che hanno noleggiato dvd relativi a film in cui recitano attori francesi

Page 32: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESEMPIO DIFFICILECognome e Nome sono attributi della relazione Clienti.

Clienti è collegata a DVD tramite CodiceCliente,

DVD è collegata a Film tramite CodiceDVD, Film è collegato a Recita tramite CodiceDVD, ed infine Recita è collegato con Attori tramite Nome; finalmente in Attori troviamo l’attributo Nazionalità, e possiamo quindi verificare la condizione di ricerca.

In SQL tale interrogazione è piuttosto fastidiosa da scrivere:

SELECT Cl.Cognome, Cl.Nome

FROM Clienti Cl, DVD D, Film F, Recita R, Attori A

WHERE Cl.CodiceCliente = D.CodiceCliente

and D.CodiceDVD = F.CodiceDVD

and F.CodiceDVD = R.CodiceDVD

and R.Nome = A.Nome

and A.Nazionalità = “francese”

Page 33: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

33

ESEMPIO DIFFICILE

Può essere utile, per individuare le relazioni da specificare nella clausola FROM, considerare lo schema E-R rappresentato dallo schema relazionale: da tale schema risulta evidente che per collegare Clienti con Attori occorre attraversare tutte le classi intermedie.

Dvd

Page 34: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Funzioni di aggregazione

SQL consente di estrarre dalla Base di Dati informazioni che non sono esplicitamente presenti, ma si ottengono da quelle presenti utilizzando opportune funzioni dette funzioni di aggregazione.

Studenti (Matricola, Nome, CorsodiLaurea)

Esami (Matricola*, CodiceAF*, Voto)

AttivitàFormativa(CodiceAF, NomeAF, CFU)

Le funzioni di aggregazione consentono di estrarre dal DB informazioni quali il numero di esami sostenuti da un determinato studente, il numero di studenti che hanno sostenuto un determinato esame, valori medi, massimi, minimi ecc.

Page 35: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

COUNT

? Numero di esami sostenuti dallo studente con Matricola 123SELECT Count(*)FROM EsamiWHERE Matricola=123

Count(*) indica un conteggio: vengono contate le ennuple (ricordiamo che * indica l’intera ennupla) di Esami che soddisfano alla condizione Matricola=123. Restituisce il numero di righe che soddisfano la condizione specificata nella clausola WHERE

Al risultato di una funzione di aggregazione può essere dato un nome tramite il costrutto as:

SELECT Count(*) as Numero_Esami_AA252FROM Esami EWHERE CodiceMateria=AA252

Page 36: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

SUM

? Numero di crediti acquisiti dallo studente con Matricola 123

SELECT Sum(CFU) as Crediti_di_123

FROM Esami E, AttivitàFormative A

WHERE E.CodiceAF = A.CodiceAF

and E.Matricola=123 Sum(CFU) indica l’ordinaria somma aritmetica dei valori (che devono

essere numerici) dell’attributo CFU. Consideriamo la seguente istanza del DB

Page 37: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

SUM

Il join E.CodiceAF = A.CodiceAF da luogo alla seguente relazione

La condizione E.Matricola=123 da luogo alla seguente relazione

Page 38: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

SUM

La funzione Sum esegue la somma dei valori dell’attributo CFU e si ottiene il risultato desiderato

L’uso delle funzioni di aggregazione è limitato al caso in cui il risultato sia costituito da un solo valore; non possono cioè essere presenti allo stesso tempo nella clausola SELECT sia attributi che funzioni di aggregazione. La seguente interrogazione, ad es. è sbagliata (del resto avrebbe poco senso)

SELECT Voto, Count(*)FROM EsamiWHERE Matricola=123

Page 39: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

MAX e MIN

? Il voto più basso dello studente con Matricola 123SELECT Min(Voto)FROM EsamiWHERE Matricola=123

Il voto più alto dello studente con Matricola 123SELECT Max(Voto)FROM EsamiWHERE Matricola=123

La funzione MAX (MIN) serve a trovare il valore massimo (€minimo) di una colonna.

Page 40: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Riassumendo

Le funzioni di aggregazione previste da SQL sono: avg media aritmetica (valori numerici) count numero di valori max valore massimo min valore minimo sum somma (valori numerici)

Min e Max, quando sono applicati a valori non numerici, danno rispettivamente il primo e l’ultimo valore nell’ordine alfabetico.

Page 41: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ORDER BY

La clausola ORDER BY, specificata dopo SELECT FROM WHERE fa sì che il risultato sia ordinato; si può scegliere fra ordinamento crescente (se non si specifica nulla), o decrescente (se si specifica desc).

L’ordinamento può essere fatto anche su più attributi.

Nome e reddito delle persone con meno di trenta anni in ordine alfabetico

select nome, reddito

from persone

where eta < 30

order by nome

Page 42: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Persone

Nome Reddito

Andrea 21

Aldo 15

Filippo 30

Persone

Nome Reddito

Andrea 21

Aldo 15

Filippo 30

select nome, redditofrom personewhere eta < 30

select nome, redditofrom personewhere eta < 30order by nome

Page 43: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

NULL

A IS NULL , A IS NOT NULL controlla che l’ attributo A abbia o non abbia valore nullo

? La collocazione dei dvd non noleggiatiSELECT CollocazioneFROM DVDWHERE CodiceCliente is null

? La collocazione dei dvd noleggiati dopo il 1/1/08SELECT CollocazioneFROM DVDWHERE DataNoleg is not null and DataNoleg > 1/1/05

L’uso del predicato is [not] null è l’unico modo per stabilire se una dvd è o non è noleggiat0.

Page 44: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Sistemi per il recupero delle informazioni

ESERCIZI

Page 45: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 1

Nell’ esercizio che segue sono dati degli schemi di Basi di Dati relazionali, e delle richieste di informazioni da estrarre dalle Basi di Dati.

Esprimere tali richieste con interrogazioni SQL.

SCHEMA RELAZIONALE:

ATTORI (CodAttore, Nome, AnnoNascita, Nazionalità);RECITA (CodAttore*, CodFilm*)FILM (CodFilm, Titolo, AnnoProduzione, Nazionalità, Regista, Genere)PROIEZIONI (CodProiezione, CodFilm*, CodSala*, Incasso, DataProiezione)SALE (CodSala, Posti, Nome, Città)

Page 46: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 1

Scrivere le interrogazioni SQL che restituiscono le seguenti informazioni:

1- Il nome di tutte le sale di Verona

2- Il titolo dei film di F. Fellini prodotti dopo il 1960.

3- Il titolo e la durata dei film di fantascienza giapponesi o francesi prodotti dopo il 1990

4- I titolo dei film dello stesso regista di “Casablanca”

5- Il titolo ed il genere dei film proiettati il giorno di Natale 2004

6- Il titolo dei film in cui recita M. Mastroianni oppure S.Loren

7- Il numero di sale di Messina con più di 60 posti

Page 47: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 1

1- Il nome di tutte le sale di Verona

SELECT s.Nome FROM Sale s WHERE s.Città = 'Pisa‘

2- Il titolo dei film di F. Fellini prodotti dopo il 1960.

SELECT f.Titolo FROM Film f WHERE f.Regista = “Fellini” AND f.AnnoProduzione > 1960

3- Il titolo e la durata dei film di fantascienza giapponesi o francesi prodotti dopo il 1990

SELECT f.Titolo, f.Durata FROM Film f WHERE f.Genere=”Fantascienza” and ((f.Nazionalità=”Giapponese” or f.Nazionalità=”Francese”) and f.AnnoProduzione >1990

Page 48: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 14- I titolo dei film dello stesso regista di “Casablanca”

SELECT f.Titolo FROM Film f

WHERE f.Regista = (SELECT f.Regista FROM Film f WHERE f.Titolo = “Casablanca”)

5- Il titolo ed il genere dei film proiettati il giorno di Natale 2004

SELECT DISTINCT f.Titolo, f.Genere FROM Film f, Proiezioni p

WHERE p DataProiezione =25/12/04 and f.CodFilm=p.CodFilm

6- Il titolo dei film in cui recita M. Mastroianni oppure S.Loren

SELECT DISTINCT f.Titolo FROM Film f, Recita r, Attore a

WHERE (a.Nome = “M.Mastrianni” OR a.Nome = ”S.Loren”)

AND f.CodFilm = r.CodFilm AND r.CodAttore = a.CodAttore

7- Il numero di sale di Messina con più di 60 posti

SELECT count(*) FROM Sale s

WHERE s.Città = “Messina” and s.Posti > 60

Page 49: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 2

SCHEMA RELAZIONALE:

ROMANZI(CodiceR, Titolo, NomeAut*, Anno)

PERSONAGGI(NomeP, CodiceR*, sesso, ruolo)

AUTORI(NomeAut, AnnoN, AnnoM:optional, Nazione)

FILM(CodiceF, Titolo, Regista, Produttore, Anno, CodiceR*)

Page 50: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 2

1- Il titolo dei romanzi del 19° secolo 2- Il titolo, l’autore e l’anno di pubblicazione dei romanzi di autori russi,

ordinati per autore e, per lo stesso autore, ordinati per anno di pubblicazione 3- I personaggi principali (ruolo =”P”) dei romanzi di autori viventi. 4. I romanzi dai quali è stato tratto un film con lo stesso titolo del romanzo 5- Il titolo, il regista e l’anno dei film tratti dal romanzo “Robin Hood” 6- Per ogni autore italiano, l’anno del primo e dell’ultimo romanzo.

Page 51: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 3

SCHEMA RELAZIONALE:

STUDENTI (Matricola, NomeS, CorsoLaurea*, AnnoN)

CORSIDILAUREA (CorsoLaurea, TipoLaurea, Facoltà)

FREQUENTA (Matricola*, CodCorso*)

CORSI (CodCorso, NomeCorso, CodDocente*)

DOCENTI (CodDocente, NomeD, Dipartimento)

Page 52: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

ESERCIZIO 3

1- Il nome e l’anno di nascita degli studenti iscritti a Editoria e Giornalismo, in ordine rispetto al nome

2- Matricola e nome degli studenti di un corso di laurea triennale (tipoLaurea = 'L') che seguono un corso di un docente di nome Anna.

3- Per ogni tipo di laurea, il tipoLaurea e l’età media degli studenti

4- Il codice dei corsi frequentati da più di 5 studenti e tenuti da docenti del Dipartimento di Informatica

5- Per ogni studente della Facoltà di Lettere e Filisofia, la matricola ed il numero di corsi seguiti

6- Matricola e nome degli studenti che non frequentano nessun corso

7- Nome e CodDocente dei docenti che insegnano qualche corso seguito da più di 5 studenti

Page 53: Sistemi per il recupero delle informazioni RIASSUNTO: IL LINGUAGGIO SQL

Esercizio

Provate a creare un DB (potete anche usare la creazione guidata di Access) contenente almeno 2 tabelle query su tabelle singole e su più tabelle maschere report

Inviatemi, per favore , a [email protected] entro il 4 Dicembre i file .mdb del DB da voi creato un file di testo con le risposte agli esercizi 2 e 3

GRAZIE!!!!!!!!! ^_^ e…buon lavoro!!!