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

Documenti analoghi
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. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

Basi di dati I Prova di autovalutazione 30 ottobre 2014

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

Interrogazioni nidificate

Interrogazioni nidificate

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

Esempio di database relazionale con l utilizzo del prodotto MySQL

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

ESERCIZI SQL. Esercizio 1

CAPITOLO 4 ESERCIZI SU SQL

Basi di Dati. Esercitazione SQL. Ing. Paolo Cappellari

Linguaggio SQL seconda parte

ESERCIZI INTERROGAZIONI SQL

Esercitazione su SQL

Concettuale. Giuseppe Amato

Alessandra Raffaetà. Esempio: Compagnia di trasporti

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

Basi di Dati: Corso di laboratorio

Informatica per le Scienze Umane. Introduzione al corso: programma

Esercitazione SQL. Università degli Studi del Sannio Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

MAX, SUM, AVG, COUNT)

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi.

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati. S Q L Lezione 4

Esercizio 4.1. Soluzione:

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

SQL Laboratorio di Basi di Dati a.a. 2002/2003

OPERAZIONI SULLA STRUTTURA

Alessandra Raffaetà. Qualificazione: notazione con il punto

SQL - Funzioni di gruppo

Esercizi di SQL 1- SELEZIONI SEMPLICI 1 2- SELEZIONI CON PROIEZIONI 1 3- FUNZIONI DI INSIEME 2 4- FUNZIONI DI AGGREGAZIONE 2 5- HAVING 3

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

Gli operatori relazionali

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

SQL e algebra relazionale

UTENTE (Codice, Nome, Cognome, Indirizzo, Telefono) PRESTITO (Collocazione, CodUtente, DataPrestito, DataRest)

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Basi di Dati. Esercitazione 2: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Basi di dati: appello 21/09/12

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Esempi SQL con Access. Orazio Battaglia

Basi di Dati: Corso di laboratorio

Interrogazioni complesse. SQL avanzato 1

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Tipi di sottoquery SQL

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Basi di Dati Corso di Laura in Informatica Umanistica

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

2- Il titolo dei film di F. Fellini prodotti dopo il SELECT f.titolo FROM Film f WHERE f.regista = Fellini AND f.annoproduzione > 1960

Il linguaggio SQL: DML di base. Versione elettronica: 04.2.SQL.DMLbase.pdf

Il linguaggio SQL: DML di base

Esercizi di SQL. 3) cognome e nome dei clienti che abitano a Rimini e guadagnano più di 3000;

Basi di Dati DBDMG - Politecnico di Torino Esercizi di SQL

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

Eserciziario SQL. Costantino, Luca, Santoro, Marchese. 29 aprile Utilizzando le relazioni Comune e Terremoto, risolvete le seguenti query SQL

CREATE TABLE Nome ( Attributo Tipo [Vincolo {, Vincolo }] {, Attributo Tipo [Vincolo {, Vincolo }]} [, VincoloDiTabella {, VincoloDiTabella}] )

Basi di Dati Esempi di SQL

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Esercizi di SQL. Esercizio 1. È dato lo schema relazionale costituito dalle seguenti tabelle (le chiavi primarie sono sottolineate)

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

<Nome Tabella>.<attributo>

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Data management a.a Il linguaggio SQL

Basi di dati. SQL :Structured Query Language: SELECT (II) Prof.ssa Rosalba Giugno. SQL (Slide tratte in parte da. McGraw-Hill.

Il linguaggio SQL: query innestate

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Laboratorio di Basi di Dati

SQL - Sottointerrogazioni

Caratteristiche dei linguaggi per Database

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Basi di Dati Temi d esame svolti (SQL)

PROVA SCRITTA DI TECNOLOGIA DATABASE 02/12/2004 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

Basi di Dati Esempi di SQL

1 Database universitario 1.1 Elenco tabelle PERSONA (ID, is_studente, is_docente, nome, cognome) STUDENTE (matricola, persona references persona(id))

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

Tab. 1 Iscritti/Immatricolati al 1 anno

Si considerino le seguenti specifiche relative alla realizzazione di un sistema informativo per un concessionario di automobili.

Esercitazione: Interrogazioni SQL

1. esprimere in algebra relazionale la seguente interrogazione. Estrarre nome, e cognome dei clienti che hanno noleggiato auto di categoria Executive

1- Il nome di tutte le sale di Pisa SELECT s.nome FROM Sale s WHERE s.città = 'Pisa'

Basi di dati: appello 28/02/06

Esercizio con attributo cross-dimensionale - transazionale

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella i dati di società di assicurazioni che erogano polizze sanitarie.

Corso di Basi di Dati A.A. 2015/2016

Il linguaggio SQL: le viste

Le interrogazioni annidate

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Istruzioni DML di SQL

Basi di Dati - V. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL (cont.) Corso di Laurea in Informatica Anno Accademico 2013/2014

Interrogare una base di dati: Algebra relazionale e SQL. Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Transcript:

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL Testi degli esercizi Si consideri il seguente schema di base di dati. STUDENTE(Matricola, Nome, Cognome, Indirizzo, Città) INSEGNANTE(Matricola, Nome, Cognome, Città, Telefono, Stipendio) CORSO(Codice, Nome, Facoltà, NumeroCrediti) ESAME(CodiceCorso, MatricolaStudente, Voto) INSEGNAMENTO(CodiceCorso, MatricolaProfessore, NumeroStudenti) Risolvere in SQL le seguenti interrogazioni: 1) Trovare il numero di professori che guadagnano meno di 2000 euro. 2) Trovare il numero di città da cui provengono gli studenti contenuti nella base di dati. 3) Trovare il massimo stipendio degli insegnanti il cui nome inizia per M e la cui terza lettera è una r. 4) Trovare il voto medio e il numero di esami sostenuti da ogni studente. 5) Trovare il voto medio e il numero di esami sostenuti da ogni studente con voto medio superiore a 25. 6) Elencare codice corso, matricola studente e voto degli esami sostenuti dagli studenti di Milano. 7) Calcolare il numero di studenti iscritti a corsi da 5 crediti della facoltà Ingegneria tenuti da professori di nome Piero residenti a Milano. 8) Trovare matricola, cognome e nome degli studenti di Milano che hanno superato esami per un totale di almeno 20 crediti. 9) Trovare la matricola degli studenti che hanno preso un 30 e un 30 e lode, supponendo che il voto 30 e lode sia memorizzato come 33. 10) Elencare i cognomi e i nomi dei professori e degli studenti presenti nella base di dati. 11) Trovare i cognomi dei professori che non sono anche cognomi di studenti di Milano. 12) Trovare i codici e i nomi dei corsi con il massimo numero di crediti. 13) Trovare i codici e i nomi di tutti i corsi ad eccezione di quelli con il minor numero di crediti. 14) Trovare matricola, nome e cognome degli studenti che hanno preso qualche voto maggiore di 20 in un esame con codice che inizia con IN e la cui quarta lettera è L. 15) Trovare la matricola degli studenti che hanno superato gli esami di tutti i corsi. 16) Trovare le matricole degli studenti che hanno preso più 30 e lode che 30. 17) Calcolare la media delle medie dei voti ottenuti dagli studenti. 18) Trovare voto medio e matricola degli studenti con voto medio maggiore del voto medio complessivo. 19) Trovare matricola, cognome e nome degli studenti che hanno ottenuto almeno un voto maggiore o uguale al voto medio più alto in assoluto.

ESERCIZI PER CASA Considerare il seguente schema di base di dati: FORNITORE(CodiceF, Nome, Indirizzo, Città) PRODOTTO(CodiceP, Nome, Marca, Modello) CATALOGO(CodiceF, CodiceP, Costo) 1. Trovare il codice del prodotto più costoso tra quelli distribuiti a Roma 2. Trovare la città (o le città) con il costo medio dei prodotti più elevato.

Soluzioni degli esercizi Si consideri il seguente schema di base di dati. STUDENTE(Matricola, Nome, Cognome, Indirizzo, Città) INSEGNANTE(Matricola, Nome, Cognome, Città, Telefono, Stipendio) CORSO(Codice, Nome, Facoltà, NumeroCrediti) ESAME(CodiceCorso, MatricolaStudente, Voto) INSEGNAMENTO(CodiceCorso, MatricolaProfessore, NumeroStudenti) 1) Trovare il numero di professori che guadagnano meno di 2000 euro. SELECT COUNT(*) FROM Insegnante WHERE Stipendio<2000 2) Trovare il numero di città da cui provengono gli studenti contenuti nella base di dati. SELECT COUNT(DISTINCT Città) FROM Studente 3) Trovare il massimo stipendio degli insegnanti il cui nome inizia per M e la cui terza lettera è una r. SELECT MAX(Stipendio) FROM Insegnante WHERE Nome LIKE M_r% 4) Trovare il voto medio e il numero di esami sostenuti da ogni studente. SELECT MatricolaStudente, AVG(Voto), COUNT(*) GROUP BY MatricolaStudente 5) Trovare il voto medio e il numero di esami sostenuti da ogni studente con voto medio superiore a 25. SELECT MatricolaStudente, AVG(Voto), COUNT(*) GROUP BY MatricolaStudente HAVING AVG(Voto)>25 6) Elencare codice corso, matricola studente e voto degli esami sostenuti dagli studenti di Milano. SELECT CodiceCorso, MatricolaStudente, Voto JOIN Studente ON MatricolaStudente=Matricola WHERE Città= Milano Oppure:

SELECT CodiceCorso, MatricolaStudente, Voto, Studente WHERE MatricolaStudente=Matricola AND Città= Milano 7) Calcolare il numero di studenti iscritti a corsi da 5 crediti della facoltà Ingegneria tenuti da professori di nome Piero residenti a Milano. [Ev. lasciare 5 minuti] SELECT SUM(Insegnamento.NumeroStudenti) FROM Insegnamento, Corso, Insegnante WHERE Insegnamento.CodiceCorso=Corso.Codice AND Insegnamento.MatricolaProfessore=Insegnante.Matricola AND Insegnante.Nome= Piero AND Insegnante.Città= Milano AND Corso.NumeroCrediti=5 AND Corso.Facoltà= Ingegneria 8) Trovare matricola, cognome e nome degli studenti di Milano che hanno superato esami per un totale di almeno 20 crediti. SELECT s.matricola, s.cognome, s.nome FROM Studente AS s JOIN Esame AS e ON s.matricola=e.matricolastudente WHERE s.città= Milano GROUP BY s.matricola, s.cognome, s.nome HAVING SUM(c.NumeroCrediti)>=20 9) Trovare la matricola degli studenti che hanno preso un 30 e un 30 e lode, supponendo che il voto 30 e lode sia memorizzato come 33. SELECT MatricolaStudente WHERE Voto=30 INTERSECT SELECT MatricolaStudente WHERE Voto=33 10) Elencare i cognomi e i nomi dei professori e degli studenti presenti nella base di dati. SELECT Cognome, Nome FROM Insegnante UNION SELECT Cognome, Nome FROM Studente

11) Trovare i cognomi dei professori che non sono anche cognomi di studenti di Milano. SELECT Cognome FROM Insegnante EXCEPT SELECT Cognome FROM Studente WHERE Città= Milano 12) Trovare i codici e i nomi dei corsi con il massimo numero di crediti. SELECT Codice, Nome FROM Corso WHERE NumeroCrediti >= ALL (SELECT NumeroCrediti FROM Corso) Oppure: SELECT Codice, Nome FROM Corso WHERE NumeroCrediti = (SELECT MAX(NumeroCrediti) FROM Corso) 13) Trovare i codici e i nomi di tutti i corsi ad eccezione di quelli con il minor numero di crediti. SELECT Codice, Nome FROM Corso WHERE NumeroCrediti > ANY (SELECT NumeroCrediti FROM Corso) Oppure: SELECT Codice, Nome FROM Corso WHERE NumeroCrediti <> (SELECT MIN(NumeroCrediti) FROM Corso) 14) Trovare matricola, nome e cognome degli studenti che hanno preso qualche voto maggiore di 20 in un esame con codice che inizia con IN e la cui quarta lettera è L. SELECT DISTINCT Studente.Matricola, Studente.Nome, Studente.Cognome FROM Studente, Esame WHERE Studente.Matricola=Esame.MatricolaStudente AND Esame.Voto>20 AND Esame.CodiceCorso LIKE IN_L% Oppure:

SELECT Matricola, Nome, Cognome FROM Studente WHERE Matricola IN ( SELECT MatricolaStudente WHERE Voto>20 AND CodiceCorso LIKE IN_L% ) 15) Trovare la matricola degli studenti che hanno superato gli esami di tutti i corsi. SELECT S.Matricola FROM Studente AS S WHERE NOT EXISTS ( SELECT * FROM Corso AS C WHERE S.Matricola NOT IN ( SELECT E.MatricolaStudente AS E WHERE E.CodiceCorso= C.Codice )) 16) Trovare le matricole degli studenti che hanno preso più 30 e lode che 30. SELECT E.MatricolaStudente AS E WHERE Voto=33 GROUP BY E.MatricolaStudente HAVING COUNT(*) > ( SELECT COUNT(*) AS E2 WHERE E.MatricolaStudente =E2.MatricolaStudente AND E2.Voto=30 ) 17) Calcolare la media delle medie dei voti ottenuti dagli studenti. CREATE VIEW Media(Matricola, VotoMedio) AS ( SELECT MatricolaStudente, AVG(Voto) GROUP BY MatricolaStudente ) SELECT AVG(VotoMedio) FROM Media

18) Trovare voto medio e matricola degli studenti con voto medio maggiore del voto medio complessivo. SELECT Matricola, VotoMedio FROM Media WHERE VotoMedio > (SELECT AVG(Voto) ) Oppure, senza vista: SELECT MatricolaStudente, AVG(Voto) GROUP BY MatricolaStudente HAVING AVG(Voto) > (SELECT AVG(Voto) ) 19) Trovare matricola, cognome e nome degli studenti che hanno ottenuto almeno un voto maggiore o uguale al voto medio più alto in assoluto. SELECT DISTINCT Studente.Matricola, Studente.Cognome, Studente.Nome FROM Studente, Esame WHERE Studente.Matricola=Esame.MatricolaStudente AND Voto>=( SELECT MAX(VotoMedio) FROM Media ) Oppure, senza vista: SELECT DISTINCT Studente.Matricola, Studente.Cognome, Studente.Nome FROM Studente, Esame WHERE Studente.Matricola=Esame.MatricolaStudente AND Voto >= ALL (SELECT AVG(Voto) GROUP BY MatricolaStudente)

ESERCIZI PER CASA Considerare il seguente schema di base di dati: FORNITORE(CodiceF, Nome, Indirizzo, Città) PRODOTTO(CodiceP, Nome, Marca, Modello) CATALOGO(CodiceF, CodiceP, Costo) 1. Trovare il codice del prodotto più costoso tra quelli distribuiti a Roma SELECT CodiceP FROM Catalogo WHERE Costo = ( SELECT MAX(Costo) FROM Catalogo AS c, Fornitore AS f WHERE c.codicef=f.codicef AND f.città= Roma ) Oppure SELECT CodiceP FROM Catalogo WHERE Costo >= ALL ( SELECT Costo FROM Catalogo AS c, Fornitore AS f WHERE c.codicef=f.codicef AND f.città= Roma ) 2. Trovare la città (o le città) con il costo medio dei prodotti più elevato. SELECT Città FROM Catalogo JOIN Fornitore ON Catalogo.CodiceF=Fornitore.CodiceF GROUP BY Città HAVING AVG(Costo) >= ALL( SELECT AVG(Costo) FROM Catalogo JOIN Fornitore ON Catalogo.CodiceF=Fornitore.CodiceF GROUP BY Città)