Esercizi sul linguaggio SQL e le basi dati relazionali

Похожие документы
Esempio di database relazionale con l utilizzo del prodotto MySQL

SELECT FROM ORDER BY SELECT FROM ORDER BY DESC DESC SELECT FROM ORDER BY DESC DESC SELECT FROM WHERE SELECT FROM WHERE AND SELECT FROM WHERE AND

Basi di Dati Corso di Laura in Informatica Umanistica

ESERCITAZIONI ACCESS

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

QL (Query Language) Alice Pavarani

SQL Esercizi DML Blocco 1

Structured Query Language

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

SQL: le funzioni di aggregazione

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

Linguaggio SQL seconda parte

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S

Caratteristiche dei linguaggi per Database

Modelli di Base Dati

PROGETTAZIONE DI DATABASE Linguaggio SQL

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Basi di Dati: Corso di laboratorio

Manuale SQL. Manuale SQL - 1 -

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Business Intelligence

Select From Where...

Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Basi di Dati: Corso di laboratorio

Modello concettuale dei dati. Paolo Brunasti - UniMiB 1 / 12

Istituto Statale E.Torricelli Liceo Scientifico Tecnologico-Tecnico Industriale. Compiti Estivi Informatica

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica (DM 270) Esame di Basi di Dati 10 marzo 2011

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Basi di Dati: Corso di laboratorio

Select Anagrafiche, Movimenti From Descrizione? Where Anagrafiche.Codice=Codice And Cognome=' Bianchi ';

Interrogazioni Interrogazioni in SQL } L'istruzione base dell'sql per costruire interrogazioni di complessita arbitraria e lo statement SELECT } Sinta

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

Транскрипт:

Esercizi sul linguaggio SQL e le basi dati relazionali Corso IN530 - Sistemi per l elaborazione delle informazioni Esercizio 1 Fig. 1: Schema fisico del database della Biblioteca Si consideri lo schema fisico del database riportato in Figura 1. Costruire le query in linguaggio SQL per ricavare le seguenti informazioni: 1. Elenco degli scrittori (nome e cognome) in ordine alfabetico. 2. Elenco dei libri e degli autori, in ordine alfabetico di titolo. 3. Elenco dei libri e degli autori di libri di narrativa straniera, in ordine alfabetico di titolo. 4. Elenco dei libri e degli autori, in ordine di genere e di lingua. 5. Elenco degli scrittori (nome e cognome) che hanno pubblicato almeno un libro presente in biblioteca. 6. Elenco degli scrittori (nome e cognome) che hanno pubblicato almeno un libro presente in biblioteca e numero di libri presenti per tale scrittore, in ordine decrescente di numerosità e iin ordine alfabetico per il cognome dello scrittore. 7. Elenco dei libri in ordine alfabetico di titolo e numero di autori per ciascun libro. 8. Nominativo, email e telefono degli utenti che hanno dei libri in prestito. 9. Elenco dei libri attualmente in prestito e del nominativo dell utente che ha il libro in prestito, ordinati per cognome dell utente. 1

2 10. Nominativo dell utente che ha preso in prestito più libri (la clausola limit 1 alla fine di un istruzione select limita ad una sola riga l output prodotto). 11. Elenco dei libri prestati e del numero di volte che sono stati presi in prestito. 12. Elenco dei libri che non sono mai stati presi in prestito e dei loro autori, ordinati per titolo del libro. Esercizio 2 Fig. 2: Schema fisico del database degli studenti di un corso di laurea Si consideri lo schema fisico del database riportato in Figura 2. Costruire le query in linguaggio SQL per ricavare le seguenti informazioni: 1. Elenco dei docenti in ordine alfabetico. 2. Elenco dei dipartimenti e dei docenti afferenti ai vari dipartimenti. 3. Elenco degli studenti in ordine alfabetico con il titolo di studio, il voto di diploma e le lingue straniere conosciute e la media della conoscenza tra scritto e orale per ogni lingua. 4. Elenco degli studenti e media dei voti (la funzione di gruppo avg produce la media dei valori di un determinato attributo numerico). 5. Elenco degli studenti e numero di crediti formativi universitari (CFU) conseguiti.

3 Soluzioni esercizio 1 1. Elenco degli scrittori (nome e cognome) in ordine alfabetico. select nome, cognome from scrittore order by cognome, nome; 2. Elenco dei libri e degli autori, in ordine alfabetico di titolo. select libro.titolo, scrittore.nome, scrittore.cognome from libro, scrittore, autore 3. Elenco dei libri e degli autori di libri di narrativa straniera, in ordine alfabetico di titolo. select libro.titolo, scrittore.nome, scrittore.cognome from libro, scrittore, autore, genere and genere.nome= Narrativa straniera and genere.id=libro.id_genere 4. Elenco dei libri e degli autori, in ordine di genere e di lingua. select libro.titolo, scrittore.nome, scrittore.cognome, genere.nome, lingua.nome from libro, scrittore, autore, genere, lingua and libro.id_lingua=lingua.id and libro.id_genere=genere.id order by genere.nome, lingua.nome, libro.titolo; 5. Elenco degli scrittori (nome e cognome) che hanno pubblicato almeno un libro presente in biblioteca. select distinct scrittore.nome, scrittore.cognome where libro.id=autore.id_libro and scrittore.id=autore.id_scrittore order by scrittore.cognome; 6. Elenco degli scrittori (nome e cognome) che hanno pubblicato almeno un libro presente in biblioteca e numero di libri presenti per tale scrittore, in ordine decrescente di numerosità e iin ordine alfabetico per il cognome dello scrittore. select scrittore.nome, scrittore.cognome, count(scrittore.cognome) as N where libro.id=autore.id_libro and scrittore.id=autore.id_scrittore group by scrittore.cognome order by N desc, scrittore.cognome; 7. Elenco dei libri in ordine alfabetico di titolo e numero di autori per ciascun libro.

4 select libro.titolo, count(libro.titolo) as n_autori group by libro.titolo order by n_autori desc, libro.titolo; 8. Nominativo, email e telefono degli utenti che hanno dei libri in prestito. select distinct utente.tessera, utente.nome, utente.cognome, utente.email, utente.telefono from utente, prestito where prestito.tessera=utente.tessera and prestito.data_restituzione is NULL; 9. Elenco dei libri attualmente in prestito e del nominativo dell utente che ha il libro in prestito, ordinati per cognome dell utente. select libro.titolo, utente.cognome from libro, utente, prestito where libro.id=prestito.id_libro and prestito.data_restituzione is NULL and prestito.tessera=utente.tessera order by utente.cognome; 10. Nominativo dell utente che ha preso in prestito più libri (la clausola limit 1 alla fine di un istruzione select limita ad una sola riga l output prodotto). select utente.cognome, count(utente.cognome) as n from utente, prestito where prestito.tessera = utente.tessera group by utente.cognome order by n desc limit 1; 11. Elenco dei libri prestati e del numero di volte che sono stati presi in prestito. select libro.titolo, count(libro.titolo) as n from libro, prestito where libro.id=prestito.id_libro group by libro.titolo order by n desc, libro.titolo; 12. Elenco dei libri che non sono mai stati presi in prestito e dei loro autori, ordinati per titolo del libro. select libro.titolo, scrittore.cognome from libro, scrittore, autore and libro.id not in (select libro.id from libro, prestito where libro.id=prestito.id_libro)

5 Soluzioni esercizio 2 1. Elenco dei docenti in ordine alfabetico. select * from docente order by cognome; 2. Elenco dei dipartimenti e dei docenti afferenti ai vari dipartimenti. select docente.nome, docente.cognome, docente.email, dipartimento.nome from docente, dipartimento where docente.dipartimento=dipartimento.id order by docente.cognome; 3. Elenco degli studenti in ordine alfabetico con il titolo di studio, il voto di diploma e le lingue straniere conosciute e la media della conoscenza tra scritto e orale per ogni lingua. select studente.cognome, studente.nome, studente.matricola, linguastraniera.nome, (conoscenza_lingua.scritto+conoscenza_lingua.orale)/2 as media, scuola.titolo, titolo_studio.voto from studente, linguastraniera, conoscenza_lingua, scuola, titolo_studio where studente.matricola=conoscenza_lingua.matricola_studente and conoscenza_lingua.id_lingua=linguastraniera.id and titolo_studio.matricola_studente=studente.matricola and titolo_studio.id_scuola=scuola.id order by studente.cognome; 4. Elenco degli studenti e media dei voti (la funzione di gruppo avg produce la media dei valori di un determinato attributo numerico). select studente.cognome, studente.nome, studente.matricola, avg(esame.voto) from studente, esame where esame.matricola_studente=studente.matricola group by studente.matricola order by studente.cognome, studente.nome; 5. Elenco degli studenti e numero di crediti formativi universitari (CFU) conseguiti. select studente.cognome, studente.nome, studente.matricola, sum(corso.cfu) from studente, esame, corso where esame.matricola_studente=studente.matricola and esame.sigla_corso=corso.sigla group by studente.matricola order by studente.cognome, studente.nome;