Esercitazione su SQL



Похожие документы
Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Basi di Dati. Esercitazione SQL. Ing. Paolo Cappellari

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

Il linguaggio SQL: query innestate

SQL: definizione schema

Esercizio 1. Cognome e nome:... Matricola:...

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Basi di Dati Corso di Laura in Informatica Umanistica

Squadra Giocatore Partita Goal Ingresso Ingresso SELECT FROM WHERE AND AND SELECT FROM WHERE AND AND AND AND SELECT FROM WHERE AND AND

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME

CAPITOLO 4 ESERCIZI SU SQL

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

SQL - Funzioni di gruppo

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

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

Gli operatori relazionali

Interrogazioni complesse. SQL avanzato 1

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

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

4 SQL : Interrogazioni nidificate

Corso di Basi di Dati

SQL seconda 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 2012/13

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Dati relazionali e XML

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 21 LUGLIO 2015 Tempo: 2h30m

Istruzioni DML di SQL

Basi di dati II prova intermedia 16 Marzo 2006 Compito 1

Il linguaggio SQL: le basi

Prova Scritta di Basi di Dati

MAX, SUM, AVG, COUNT)

Data management a.a Il linguaggio SQL

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

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

Esercizio 4.1. Soluzione:

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

Linguaggi per basi di dati

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

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

ESAME di INFORMATICA e ARCHIVIAZIONE

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

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:

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

Il linguaggio SQL. ing. Alfredo Cozzi 1

Basi di dati 9 febbraio 2010 Compito A

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL

Fondamenti di Teoria delle Basi di Dati

Algebra Relazionale e Calcolo Relazionale. L. Vigliano

Basi di Dati: Corso di laboratorio

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1

Si formulino le seguenti interrogazioni tramite il linguaggio SQL:

Esame di Basi di Dati, SOLUZIONE APPELLO 12/01/2010

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Basi di Dati. Esercizi di SQL (2) - Soluzioni

Sistemi per la gestione di database: MySQL ( )

CONCETTO DI ANNIDAMENTO

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

1. Per ogni film in cui appaiono solo attori nati prima del 1970 restituire il titolo del film.

PROGRAMMA DI CLASSE 5AI

1) Semplicissimi esercizi introduttivi

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio A

SQL (STRUCTURED QUERY LANGUAGE)

Esercizi SQL. Dato il seguente schema di una base di dati dove gli attributi che compongono la chiave sono scritti in grassetto

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

Elaborazione Automatica dei Dati. SQL come Query Language. Enrico Cavalli. Anno Accademico Il linguaggio SQL

SQL IL LINGUAGGIO DI INTERROGAZIONE

Esercizio ER 1. Soluzione ER 1

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

DBMS (Data Base Management System)

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Compito Basi di Dati. Tempo concesso: 90 minuti 08 Giugno 2006 Nome: Cognome: Matricola:

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Vogliamo creare una anagrafe e poi creare delle query che rispondono a delle domandi. Utilizzando Microsoft Access

Corso di Laboratorio di Basi di Dati

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

Linguaggio SQL. Structured Query Language

Basi di Dati. S Q L Lezione 5

Operazioni sui database

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

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

Interrogazioni nidificate, commenti

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

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

Appello di BD del Corso di laurea in Informatica del 9/1/2007 Compito e soluzioni

ESAME di INFORMATICA e ARCHIVIAZIONE

(a) Trovare le informazioni dei viaggi di durata inferiore ai 15 giorni select * from Viaggio where Durata <15

Linguaggio SQL seconda parte

Транскрипт:

Esercizio 1. Esercitazione su SQL Si consideri la base di dati relazionale composta dalle seguenti relazioni: impiegato Matricola Cognome Stipendio Dipartimento 101 Sili 60 NO 102 Rossi 40 NO 103 Neri 40 NO 201 Neri 40 SU 202 Verdi 50 SU 301 Bisi 70 IS progetto Sigla Nome Bilancio Responsabile Alpha Vendite 30 202 Beta Inventario 50 301 Gamma Distribuzione 18 301 con i seguenti vincoli di riferimento: dipartimento Codice Nome Sede Direttore NO Nord Milano 101 SU Sud Napoli 201 IS Isole Palermo 301 partecipazione Impiegato Progetto 101 Alpha 101 Beta 103 Alpha 103 Beta 201 Beta 202 Beta tra l attributo Dipartimento della relazione Impiegato e la relazione Dipartimento tra l attributo Direttore della relazione Dipartimento e la relazione Impiegato tra l attributo Responsabile della relazione Progetto e la relazione Impiegato tra l attributo Impiegato della relazione Partecipazione e la relazione Impiegato tra l attributo Progetto della relazione Partecipazione e la relazione Progetto Formulare le seguenti interrogazioni in SQL. 1. Trovare matricola e cognome degli impiegati che guadagnano più di 50. 2. Trovare cognome e stipendio degli impiegati che lavorano a Roma. 3. Trovare cognome degli impiegati e nome del dipartimento in cui lavorano. 4. Trovare cognome degli impiegati che sono direttori di dipartimento. 5. Trovare i nomi dei progetti e i cognomi dei responsabili. 6. Trovare i nomi dei progetti con bilancio maggiore di 100 e i cognomi degli impiegati che lavorano su di essi. 7. Trovare cognome degli impiegati che guadagnano più del loro direttore di dipartimento. 8. Trovare cognome dei direttori di dipartimento e dei responsabili di progetto. 9. Trovare nomi dei dipartimenti in cui lavorano impiegati che guadagnano più di 60. 10. Trovare nomi dei dipartimenti in cui tutti gli impiegati guadagnano più di 60. 11. Trovare cognome degli impiegati di stipendio massimo. 12. Trovare matricola e cognome degli impiegati che non lavorano a nessun progetto. 1

13. Trovare matricola e cognome degli impiegati che lavorano a più di un progetto. 14. Trovare matricola e cognome degli impiegati che lavorano a un solo progetto. 15. Trovare per ciascun dipartimento lo stipendio medio degli impiegati che vi lavorano. 16. Trovare matricola e cognome degli impiegati che hanno lo stipendio superiore almeno del 10% rispetto allo stipendio medio del loro dipartimento. 2

Soluzioni degli esercizi Soluzione Esercizio 1. 1. SELECT Matricola, Cognome WHERE Stipendio > 50 2. Contrariamente alla interrogazione precedente (in cui la chiave di Impiegato compariva nel risultato) nella lista degli attributi risultato dell interrogazione che dobbiamo costruire non compare nessuna chiave di Impiegato. In questo caso è quindi necessario costruire una interrogazione SQL che utilizzi la clausola DISTINCT: SELECT DISTINCT Cognome, Stipendio, DIPARTIMENTO WHERE Dipartimento=Codice AND Sede= Roma 3. AS Impiegato, Nome AS Dipartimento, DIPARTIMENTO WHERE Dipartimento = Codice 4., DIPARTIMENTO WHERE Matricola = Direttore Una interrogazione SQL equivalente è la seguente WHERE EXISTS (SELECT * FROM DIPARTIMENTO WHERE Direttore = Matricola) Una ulteriore possibilità è la seguente: WHERE Matricola IN (SELECT Direttore FROM DIPARTIMENTO) 5. AS Progetto, Cognome AS Responsabile, PROGETTO WHERE Matricola = Responsabile AS Progetto, Cognome AS Responsabile JOIN PROGETTO ON Matricola = Responsabile 6., Cognome, PROGETTO, PARTECIPAZIONE WHERE Sigla = Progetto AND Matricola = Impiegato AND Bilancio > 100 ORDER BY Nome 3

7. SELECT DISTINCT imp.cognome imp, IMPIEGATO dir, DIPARTIMENTO WHERE imp.dipartimento = Codice AND dir.matricola = Direttore AND imp.stipendio > dir.stipendio 8., DIPARTIMENTO WHERE Matricola = Direttore UNION, PROGETTO WHERE Matricola = Responsabile 9. CREATE VIEW ID AS SELECT *, DIPARTIMENTO WHERE Dipartimento = Codice; WHERE Stipendio > 60 10. WHERE Codice NOT IN (SELECT Dipartimento WHERE Stipendio <= 60) FROM DIPARTIMENTO WHERE NOT EXISTS (SELECT * WHERE Dipartimento = Codice AND Stipendio <= 60) EXCEPT WHERE Stipendio <= 60 11. i1 WHERE NOT EXISTS (SELECT * i2 4

WHERE i2.stipendio > i1.stipendio) WHERE Stipendio = (SELECT max(stipendio) ) 12. WHERE Matricola NOT IN (SELECT Impiegato FROM PARTECIPAZIONE) WHERE NOT EXISTS (SELECT * FROM PARTECIPAZIONE WHERE Impiegato = Matricola) 13. CREATE VIEW IP AS SELECT * LEFT JOIN PARTECIPAZIONE ON Matricola = Impiegato LEFT JOIN PROGETTO ON Progetto = Sigla; SELECT DISTINCT p1.cognome FROM IP p1, IP p2 WHERE p1.matricola = p2.matricola AND p1.progetto <> p2.progetto CREATE VIEW NP(Matricola, Cognome, NumProgetti) AS SELECT Matricola, Cognome, COUNT(Progetto) FROM IP GROUP BY Matricola, Cognome; FROM NP WHERE NumProgetti > 1 SELECT DISTINCT Cognome WHERE 1 < (SELECT COUNT(*) FROM PARTECIPAZIONE WHERE Impiegato = Matricola) 5

14. SELECT DISTINCT Cognome FROM IP WHERE Matricola NOT IN (SELECT p1.matricola FROM IP p1, IP p2 WHERE p1.matricola = p2.matricola AND p1.progetto <> p2.progetto) AND Progetto IS NOT NULL; FROM NP WHERE NumProgetti = 1 WHERE 1 = (SELECT COUNT(*) FROM PARTECIPAZIONE WHERE Impiegato = Matricola) 15. SELECT Codice, Nome, AVG(Stipendio) GROUP BY Codice, Nome 16. SELECT Matricola, Cognome, Stipendio i1 WHERE Stipendio > (SELECT 1.1 * AVG(Stipendio) FROM Impiegato i2 WHERE i1.dipartimento = i2.dipartimento) 6