Basi di Dati. S Q L Lezione 3

Documenti analoghi
Basi di Dati. S Q L Lezione 2

Basi di Dati. S Q L Lezione 4

Basi di Dati: Corso di laboratorio

SQL - Structured Query Language

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

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

Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003

Il linguaggio SQL: query innestate

Tipi di sottoquery SQL

Basi di Dati. S Q L Lezione 5

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

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

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

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 2010/11

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1.

Esercitazione 3 SQL 2

Alessandra Raffaetà. Esercizio: Cinema

Basi di Dati: Corso di laboratorio

BASI DATI: algebra relazionale

Linguaggio SQL: fondamenti D B M G

BASE DI DATI. Esercitazione: Campionato italiano 2015/2016 Raggruppamenti Nidificazione. Informatica Umanistica Università di Pisa

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

Interrogazioni nidificate

Simulazione prova pratica

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

Linguaggio SQL seconda parte

BASE DI DATI. Esercizio: Campionato corse Progettazione concettuale Progettazione logica. Informatica Umanistica Università di Pisa

Algebra relazionale: operazioni

Interrogazioni nidificate

STUDIO. Esercizi proposti a lezione cap. 3 rev. dic da Ulmann, Widom Introduzione ai database. indirizzo. titolo. nome. recitain. attori.

SQL e algebra relazionale

Il linguaggio SQL: le viste

Laboratorio di Basi di Dati SQL avanzato

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

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

Interrogazioni$e$il$valore$NULL$

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Le interrogazioni annidate

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

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

<Nome Tabella>.<attributo>

σ data 15/12/2013 data 20/12/2014

Interrogazioni semplici

Basi di dati I Prova di autovalutazione 30 ottobre 2014

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

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

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

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Introduzione alle basi di dati

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna Pag.1

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

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

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

Simulazione della terza prova

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

Esercitazione 3 SQL.

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

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

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

Basi di dati: appello 14/07/06

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

Basi di Dati: Corso di laboratorio

b) Si scrivano le interrogazioni SQL che restituiscono le seguenti informazioni, senza duplicazione dei risultati:

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

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

SQL - Sottointerrogazioni

Interrogazioni complesse. SQL avanzato 1

Esame di Basi di Dati SOLUZIONE APPELLO 14/06/2011

Basi di Dati. Esercitazione Algebra Relazionale. 16 maggio 2008

CONCETTO DI ANNIDAMENTO

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a

Persona(CodiceFiscale, Cognome, Nome, DataDiNascita, LuogoDiNascita, Indirizzo)

Esercizio 5.1. Soluzione:

Il linguaggio SQL: query innestate

Estensioni del linguaggio SQL per interrogazioni OLAP

ed SQL 10 Novembre 2009

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

Esempi SQL con Access. Orazio Battaglia

Viene richiesto di MIN CARD(S,E) = 1 UPDATE DELETE MAX CARD(S,E) = 3 INSERT UPDATE

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

SQL QUERY: Le interrogazioni del database

Basi di Dati prof. Letizia Tanca

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

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

Esercitazione su SQL

ESERCIZI SQL. Esercizio 1

Basi di dati: appello 04/07/06

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

Interrogazioni in SQL

Concettuale. Giuseppe Amato

Capitolo 4. SQL: il linguaggio di interrogazione. Originato da SEQUEL-XRM e System-R ( ) dell IBM

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

Corso di Basi di Dati

4 SQL : Interrogazioni nidificate

Cognome Nome Matricola Ordin.

Istruzioni DML di SQL

Schema Del DB Operazionale TELEFONATE

Basi di Dati Corso di Laura in Informatica Umanistica

Transcript:

Basi di Dati S Q L Lezione 3 Antonio Virdis a.virdis@iet.unipi.it

Sommario Binding tra query e visibilità Query annidate non scalari Tabelle come insiemi Viste 2

Query annidate di nuovo!?!) Possiamo annidare query nel: Select From Where Ci permettono di unire diverse domande in una stessa query 3

Query annidate scalari di nuovo!?!) Indicare nome e cognome del medico con la parcella più alta... SELECT m1.nome, m1.cognome FROM medico AS m1 WHERE parcella = SELECT MAXparcella) FROM medico AS m2 ) 1 2 Non correlate! 4

Query annidate scalari correlate Indicare nome e cognome del medico con la parcella più alta...per ogni città SELECT m1.nome, m1.cognome FROM medico AS m1 WHERE parcella = SELECT MAXparcella) FROM medico AS m2 WHERE m1.citta = m2.citta ) Correlate! 5

Visibilità Una variabile è usabile solo Nella query in cui è definita In una query nidificata interna a quella in cui è definita SELECT m1.nome, m1.cognome FROM medico AS m1 WHERE parcella = SELECT MAXparcella) FROM medico AS m2 WHERE m1.citta = m2.citta ) 6

Query annidate NON scalari E' possibile confrontarsi con una query che produce più di un risultato Si fanno seguire agli operatori di confronto le parole chiave ALL, ANY E' richiesta la compatibilità di dominio tra gli attributi coinvolti 7

Esercizio 1 Indicare nome e cognome del medico con la parcella più alta in un DB in cui non funzioni l'operatore MAX) SELECT nome, cognome FROM medico WHERE parcella >= ALL SELECT parcella FROM medico ) 8

Esercizio 2 Indicare nome e cognome del medico con la parcella più alta in un DB in cui non funzioni l'operatore MAX e in cui si sia rotto il tasto = ) SELECT nome, cognome FROM medico m1 WHERE parcella > ALL SELECT parcella FROM medico m2 WHERE m1.matricola<>m2.matricola ) 9

Esercizio 3 Indicare nome e cognome dei pazienti che abitano in città in cui non si trova neppure un medico specializzato in otorinolaringoiatria SELECT nome, cognome FROM paziente p WHERE p.citta <> ALL SELECT m.citta FROM medico m WHERE specializzazione='otorinolaringoiatria' ) 10

Operazioni Insiemistiche Query 1 Query 2 11

Appartenenza ad un insieme??? Expr IN SELECT ) Restituisce vero se l'espressione Expr appartiene alla sottoquery Expr NOT IN SELECT ) Restituisce vero se l'espressione Expr non appartiene alla sottoquery 12

Esistenza??? EXISTS SELECT ) Restituisce vero se la sottoquery restituisce un risultato non vuoto NOT EXISTS SELECT ) Restituisce vero se la sottoquery restituisce un risultato vuoto 13

UNIONE Query 1 Query 2 UNION 14

Esercizio 4 Indicare nome e cognome dei pazienti e dei medici SELECT nome, cognome FROM paziente UNION SELECT nome, cognome FROM medico pazienti medici 15

Intersezione A B 16

Esempio Indicare nome e cognome dei pazienti di Roma che sono stati visitati almeno una volta nel 2007 SELECT nome,cognome FROM paziente WHERE citta='roma' AND CodFiscale IN SELECT paziente FROM visita WHERE YEARdata)=2007 ) ROMA 2007 17

Differenza B A C 18

Esercizio 5 Indicare nome e cognome dei medici di Pisa che hanno visitato solamente persone con reddito inferiore a 3400 SELECT nome, cognome FROM medico m PISA WHERE città= pisa AND NOT EXISTS SELECT v.medico FROM paziente p JOIN visita v ON p.codfiscale=v.paziente WHERE p.reddito>3400 AND m.matricola=v.medico ) >3400 19

Esercizio 6 Indicare nome e cognome dei pazienti che non sono mai stati visitati da un proprio compaesano SELECT p.nome, p.cognome FROM paziente p WHERE NOT EXISTS SELECT * FROM medico m JOIN visita v ON m.matricola=v.medico WHERE m.citta=p.citta AND v.paziente=p.codfiscale ) 20

Viste Possono essere viste come tabelle di appoggio Vengono ricalcolate ogni volta che le si usa SINTASSI CREATE OR REPLACE VIEW NomeVista Attr1, Attr2, ) AS SELECT FROM WHERE ) 21

Esempio Viste Indicare quanti sono i pazienti maschi di Pisa CREATE OR REPLACE VIEW PazientiPisani AS SELECT * FROM paziente WHERE citta='pisa' AND sesso='m' ); SELECT COUNT*) FROM PazientiPisani 22

Viste: benefici Query complesse possono essere realizzate in maniera più semplice Gestione della sicurezza viste con restrizioni) Supporto per la modifica del DB 23

Esercizio 7 Indicare nome e cognome dei pazienti che sono stati visitati da tutti i medici TUTTI I MEDICI Medici che hanno visitato A 24

Soluzione 7 SELECT nome,cognome FROM paziente p WHERE NOT EXISTS SELECT paziente, medico FROM visita WHERE medico NOT IN SELECT medico FROM visita WHERE p.codfiscale=paziente ) ) 25