SQL - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/20122013 basididati/20121113... ·...

31
Matteo Picozzi http://home.dei.polimi.it/picozzi {[email protected] } SQL Structured Query Language Basi di Dati 1 Esercitazione 3 13/11/2012

Transcript of SQL - home.deib.polimi.ithome.deib.polimi.it/picozzi/teaching/20122013 basididati/20121113... ·...

Matteo Picozzihttp://home.dei.polimi.it/picozzi

{[email protected]}

SQLStructured Query Language

Basi di Dati 1Esercitazione 313/11/2012

SQL

• Structured Query Language• Si compone di- DDL

• definizione di domini, tabelle, indici, autorizzazioni, viste, vincoli, procedure, trigger

- DML• linguaggio di query, modifica e comandi

transazionali

2

Se qualcuno volesse provarci a casa

• Link utili:- Home

• www.mysql.it- Community Server (DBMS)

• http://www.mysql.it/downloads/mysql/- Workbench (GUI Tool)

• http://www.mysql.it/downloads/workbench/- Connectors (questo vi servirà in futuro)

• http://www.mysql.it/downloads/connector/- Documentation

• http://dev.mysql.com/doc/refman/5.6/en/

3

Esercizio 14

DIPENDENTI(cognome, nome, città, salario, età)

Esercizio 1

1. Ottenere tutto lo schema2. Trovare nome e cognome dei dipendenti3. Trovare nomi e cognomi di chi guadagna più

di 3000€4. Trovare nomi e cognomi di chi è di Rimini e

guadagna più di 3000€5. Trovare nomi e cognomi dei dipendenti che

hanno età compresa tra i 20 e i 30 anni6. Trovare i nomi dei dipendenti il cui cognome

termina per “ino”

5

DIPENDENTI(cognome, nome, città, salario, età)

Esercizio 1

7. Trovare il salario massimo8. Trovare il salario massimo dei dipendenti di

Milano9. Trovare il numero di dipendenti10.Trovare il numero di dipendenti con nome

diverso

6

DIPENDENTI(cognome, nome, città, salario, età)

Esercizio 1

11.Trovare l’età media per ogni città12.Trovare l’età media per ogni città,

ordinando i risultati per età decrescente13.Trovare città e l’età media delle città in cui

l’età media è maggiore di 30 anni14.Città e stipendio massimo per ogni città la

cui età media è minore di 35

7

DIPENDENTI(cognome, nome, città, salario, età)

Esercizio 1

15.Trovare tutti i dati dei dipendenti che hanno un età pari all’età minima

16.Trovare cognome, nome e salario di persone che abitano in città con almeno due dipendenti

8

DIPENDENTI(cognome, nome, città, salario, età)

Esercizio 29

CLIENTI(cod_cliente, cognome, nome, citta, eta)PRENOTAZIONI(cod_cliente, cod_albergo, camera, n_giorni, acconto)ALBERGHI(cod_albergo, nome, citta)

Esercizio 2.1

• Trovare tutti i dati dei clienti che hanno almeno 30 anni e che hanno una prenotazione per le camere 25 o 30

10

CLIENTI(cod_cliente, cognome, nome, citta, eta)PRENOTAZIONI(cod_cliente, cod_albergo, camera, n_giorni, acconto)ALBERGHI(cod_albergo, nome, citta)

Esercizio 2.2

• Trovare cognomi, nomi e città di tutti i clienti che hanno versato un acconto sopra la media

11

CLIENTI(cod_cliente, cognome, nome, citta, eta)PRENOTAZIONI(cod_cliente, cod_albergo, camera, n_giorni, acconto)ALBERGHI(cod_albergo, nome, citta)

Esercizio 312

REGISTA(nome, dataNascita, nazionalita)FILM(titolo, nomeRegista, anno)PROIEZIONE(nomeRegista, nomeFilm, citta)

Esercizio 3.1

• Trovare la nazionalità dei registi che hanno diretto film nel 2011 ma non hanno diretto film nel 2012

13

REGISTA(nome, dataNascita, nazionalita)FILM(titolo, nomeRegista, anno)PROIEZIONE(nomeRegista, nomeFilm, citta)

Esercizio 3.2

• Trovare i nomi dei registi che hanno girato più film nel 2012 che nel 2011

14

REGISTA(nome, dataNascita, nazionalita)FILM(titolo, nomeRegista, anno)PROIEZIONE(nomeRegista, nomeFilm, citta)

Esercizio 3.3

• Trovare la data di nascita dei registi che hanno diretto film proiettati sia a Torino che a Milano

15

REGISTA(nome, dataNascita, nazionalita)FILM(titolo, nomeRegista, anno)PROIEZIONE(nomeRegista, nomeFilm, citta)

Esercizio 416

AUTORE(nome, cognome, dataNascita, nazionalita)LIBRO(segnatura, scaffale, argomento, lingua)AUTORELIBRO(nome, cognome, segnatura)

Esercizio 4.1

• Trovare gli autori tedeschi di libri in italiano che parlano di filosofia o logica

17

AUTORE(nome, cognome, dataNascita, nazionalita)LIBRO(segnatura, scaffale, argomento, lingua)AUTORELIBRO(nome, cognome, segnatura)

Esercizio 4.2

• Trovare la data di nascita di autori italiani di libri in inglese che parlano di informatica ma che non sono autori di libri di matematica

18

AUTORE(nome, cognome, dataNascita, nazionalita)LIBRO(segnatura, scaffale, argomento, lingua)AUTORELIBRO(nome, cognome, segnatura)

Esercizio 4.3

• Trovare nome e cognome degli autori che hanno più di 10 libri diversi contenuti nel terzo scaffale della biblioteca

19

AUTORE(nome, cognome, dataNascita, nazionalita)LIBRO(segnatura, scaffale, argomento, lingua)AUTORELIBRO(nome, cognome, segnatura)

Esercizio 520

STADIO(numero, citta, capienza)INCONTRO(num_stadio, data, ora, squadraCasa, squadraOspite)NAZIONALE(nazione, continente, categoria)

Esercizio 5.1

• Trovare lo stadio in cui la squadra italiana gioca più partite

21

STADIO(numero, citta, capienza)INCONTRO(num_stadio, data, ora, squadraCasa, squadraOspite)NAZIONALE(nazione, continente, categoria)

Esercizio 5.2

• Trovare i numeri degli stadi in cui non gioca nessuna nazionale europea

22

STADIO(numero, citta, capienza)INCONTRO(num_stadio, data, ora, squadraCasa, squadraOspite)NAZIONALE(nazione, continente, categoria)

Esercizio 5.3

• Trovare la capienza complessiva degli stadi delle partite che hanno come squadra di casa una nazionale americana

23

STADIO(numero, citta, capienza)INCONTRO(num_stadio, data, ora, squadraCasa, squadraOspite)NAZIONALE(nazione, continente, categoria)

Esercizio 6 - TdE 14/02/200324

PIATTO(NomePiatto, Descrizione, ClasseApportoCalorico)INGREDIENTE(NomeIngrediente, CaloriePerEtto, Tipo)RICETTA(NomePiatto, NomeIngrediente, QuantitaGrammi)

Esercizio 6.1 - TdE 14/02/2003

• Trovare nome e descrizione dei piatti vegetariani

- Con ingredienti di tipo “carne”

25

PIATTO(NomePiatto, Descrizione, ClasseApportoCalorico)INGREDIENTE(NomeIngrediente, CaloriePerEtto, Tipo)RICETTA(NomePiatto, NomeIngrediente, QuantitaGrammi)

Esercizio 6.2 - TdE 14/02/2003

• Trovare il piatto con il maggior numero di calorie e le calorie corrispondenti

26

PIATTO(NomePiatto, Descrizione, ClasseApportoCalorico)INGREDIENTE(NomeIngrediente, CaloriePerEtto, Tipo)RICETTA(NomePiatto, NomeIngrediente, QuantitaGrammi)

Esercizio 6.3 - TdE 14/02/2003

• Trovare il nome dei piatti che hanno un apporto calorico basso pur essendo composti da 10 ingredienti di cui uno è maionese

27

PIATTO(NomePiatto, Descrizione, ClasseApportoCalorico)INGREDIENTE(NomeIngrediente, CaloriePerEtto, Tipo)RICETTA(NomePiatto, NomeIngrediente, QuantitaGrammi)

Esercizio 7 - TdE 28/02/200628

EMITTENTE(id, nome, frequenza, citta)SCALETTA(id_radio, nome_trasmissione, giorno, brano, oraInizio)TRASMISSIONE(id_radio, nome_trasmissione, speaker, durata)BRANO(id_brano, titolo, artista, genere, durata)SPEAKER(cf, nome, cognome, data_n, citta_n, telefono)

Esercizio 7.1 - TdE 28/02/2006

• Trovare i nomi di trasmissioni e i giorni in cui la scaletta prevede almeno 2 brani di musica rock e nessuno di classica

29

EMITTENTE(id, nome, frequenza, citta)SCALETTA(id_radio, nome_trasmissione, giorno, brano, oraInizio)TRASMISSIONE(id_radio, nome_trasmissione, speaker, durata)BRANO(id_brano, titolo, artista, genere, durata)SPEAKER(cf, nome, cognome, data_n, citta_n, telefono)

Non svolto ad

esercitazion

e

Esercizio 7.2 - TdE 28/02/2006

• Trovare nome e cognome degli speaker di trasmissioni in cui la durata totale dello spazio dedicato ai brani è sopra la media

30

EMITTENTE(id, nome, frequenza, citta)SCALETTA(id_radio, nome_trasmissione, giorno, brano, oraInizio)TRASMISSIONE(id_radio, nome_trasmissione, speaker, durata)BRANO(id_brano, titolo, artista, genere, durata)SPEAKER(cf, nome, cognome, data_n, citta_n, telefono)

Non svolto ad

esercitazion

e

Esercizio 7.3 - TdE 28/02/2006

• Scrivere in DDL il codice per creare le tabelle- EMITTENTE- TRASMISSIONE

31

EMITTENTE(id, nome, frequenza, citta)SCALETTA(id_radio, nome_trasmissione, giorno, brano, oraInizio)TRASMISSIONE(id_radio, nome_trasmissione, speaker, durata)BRANO(id_brano, titolo, artista, genere, durata)SPEAKER(cf, nome, cognome, data_n, citta_n, telefono)