Basi di Dati: Corso di laboratorio

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Basi di Dati: Corso di laboratorio"

Transcript

1 Basi di Dati: Corso di laboratorio Lezioni 6 7 Raffaella Gentilini 1 / 46

2 Sommario 1 Subquery (o Interrogazioni Nidificate) Interrogazioni Annidate con Predicati di Confronto Interrogazioni Annidate con Predicati ALL, ANY Interrogazioni Annidate con Predicato EXISTS Subquery Correlate Livelli Multipli di Annidamento Subquery e Divisione 2 / 46

3 Subquery Subquery e uno statement in un altro statement si puo trovare nei seguenti punti dei seguenti statement: 1 nelle clausole WHERE e HAVING dello statement SELECT; 2 nella clausola WHERE di un INSERT INTO, DELETE FROM, UPDATE; 3 nella clausola SET di un comando UPDATE. dalla possibilita di annidare query deriva l aggettivo structured di SQL (Structured Query Language) 3 / 46

4 Subquery Subquery La forma nidificata e piu procedurale della forma flat, e per questo talvolta piu leggibile Una subquery e sempre tra parentesi e puo restituire: un singolo valore che si puo usare come espressione scalare una colonna che si puo usare come elenco di costanti una tabella che si puo usare ovunque e possibile usare una tabella Le subquery non possono contenere operatori insiemistici 4 / 46

5 Subquery Si consideri lo schema relazionale visto nelle lezioni precedente: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto): dove id studente ed id corso sono chiavi esterne su persona e corso SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona IN (SELECT corso.id insegnante FROM corso) 5 / 46

6 Subquery Si consideri lo schema relazionale visto nelle lezioni precedente: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto): dove id studente ed id corso sono chiavi esterne su persona e corso SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona IN (SELECT corso.id insegnante FROM corso) Nome e cognome degli insegnanti che tengono almeno un corso 6 / 46

7 Subquery e operatore IN Il predicato IN Il predicato puo essere applicato a liste di attributi puo essere negato SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) 7 / 46

8 Subquery e operatore IN Il predicato IN Il predicato puo essere applicato a liste di attributi puo essere negato SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Nome e cognome degli insegnanti che non tengono alcun corso 8 / 46

9 Subquery e Predicati di Confronto Gli operatori di confronto =, <>, <, >, <=, >= si possono usare solo se l interrogazione annidata al piu una riga (subquery scalare) se la subquery non restituisce alcuna riga, il confronto da come risultato NULL in PostgreSQL, solo <> ed = sono supportati se il confronto coinvolge piu colonne SELECT id corso FROM corso WHERE crediti = (SELECT MAX(crediti) FROM corso ) 9 / 46

10 Subquery e Predicati di Confronto Gli operatori di confronto =, <>, <, >, <=, >= si possono usare solo se l interrogazione annidata al piu una riga (subquery scalare) se la subquery non restituisce alcuna riga, il confronto da come risultato NULL in PostgreSQL, solo <> ed = sono supportati se il confronto coinvolge piu colonne SELECT id corso FROM corso WHERE crediti = (SELECT MAX(crediti) FROM corso ) Id dei corsi con il massimo numero di crediti 10 / 46

11 Subquery e Predicati di Confronto Gli operatori di confronto =, <>, <, >, <=, >= si possono usare solo se l interrogazione annidata al piu una riga (subquery scalare) se la subquery non restituisce alcuna riga, il confronto da come risultato NULL in PostgreSQL, solo <> ed = sono supportati se il confronto coinvolge piu colonne SELECT id corso FROM corso WHERE crediti = (SELECT MAX(crediti) FROM corso ) Id dei corsi con il massimo numero di crediti 11 / 46

12 Subquery e Predicato ANY Per usare predicati di confronto con selezioni che possono restituire piu di una riga, occorre usare le quantificazioni ALL oppure ANY Il predicato ANY da vero se il confronto e vero per almeno una riga, da falso se tutti i confronti di riga sono falsi, o la subquery restituisce una tabella vuota se non ci sono confronti veri ed almeno uno e NULL, allora il risultato e NULL Il predicato IN e equivalente a = ANY 12 / 46

13 Subquery e Predicato ANY SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona = ANY (SELECT corso.id insegnante FROM corso) 13 / 46

14 Subquery e Predicato ANY SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona = ANY (SELECT corso.id insegnante FROM corso) Nome e cognome degli insegnanti che tengono almeno un corso 14 / 46

15 Subquery e Predicato ALL Il predicato ALL da vero se tutti i confronti di riga sono veri o la subquery restituisce la tabella vuota, da falso se almeno un confronto e falso restituisce NULL se non ci sono confronti falsi, ma almeno uno e indefinito Il predicato NOT IN e equivalente a <> ALL 15 / 46

16 Subquery e Predicato ALL SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona <> ALL (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) 16 / 46

17 Subquery e Predicato ALL SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona <> ALL (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Nome e cognome degli insegnanti che non tengono alcun corso 17 / 46

18 Subquery e Predicato ALL SELECT persona.nome, persona.cognome FROM persona WHERE persona.id persona <> ALL (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Nome e cognome degli insegnanti che non tengono alcun corso I valori NULL nella colonna id insegnante devono essere soppressi per evitare che rendano il predicato <> ALL non vero! 18 / 46

19 Subquery e Predicato EXISTS Il predicato EXISTS e vero se la subquery restituisce almeno una riga altrimenti e falso Facendo uso di NOT EXISTS e possibile verificare se la subquery non restituisce alcuna tupla SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS (SELECT FROM corso WHERE crediti > 3) 19 / 46

20 Subquery e Predicato EXISTS Il predicato EXISTS e vero se la subquery restituisce almeno una riga altrimenti e falso Facendo uso di NOT EXISTS e possibile verificare se la subquery non restituisce alcuna tupla SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS (SELECT FROM corso WHERE crediti > 3) Si noti che la query sopra non e molto interessante, in quanto il risultato della subquery e sempre lo stesso, ovvero non dipende dalla specifica tupla del blocco esterno 20 / 46

21 Subquery Correlate Se la subquery fa riferimento al blocco esterno, allora si dice correlata SELECT persona.nome, persona.cognome FROM persona P WHERE EXISTS (SELECT FROM corso C WHERE crediti > 3 AND id insegnante = P.id persona ) Adesso il risultato della query innestata dipende dalla persona specificata, e la semantica diventa: Per ogni tupla del blocco esterno, considera il valore di P.id persona e risolvi la query innestata 21 / 46

22 Subquery Correlate Se la subquery fa riferimento al blocco esterno, allora si dice correlata SELECT persona.nome, persona.cognome FROM persona P WHERE EXISTS (SELECT FROM corso C WHERE crediti > 3 AND id insegnante = P.id persona ) Insegnanti che tengono almeno un corso con piu di 3 crediti Adesso il risultato della query innestata dipende dalla persona specificata, e la semantica diventa: Per ogni tupla del blocco esterno, considera il valore di P.id persona e risolvi la query innestata 22 / 46

23 Subquery Correlate SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) AND 10 <= ALL ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) 23 / 46

24 Subquery Correlate SELECT persona.nome, persona.cognome FROM persona WHERE EXISTS ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) AND 10 <= ALL ( SELECT frequenza.voto FROM frequenza WHERE persona.id persona=frequenza.id studente AND frequenza.voto IS NOT NULL) Studenti che hanno preso solo voti superiori a / 46

25 Livelli Multipli di Annidamento Una subquery puo fare uso a sua volta di altre subquery. Il risultato si puo ottenere risolvendo a partire dal blocco piu interno. persone(nome, eta, reddito) maternita (madre,figlio) paternita (padre,figlio) SELECT nome,reddito FROM persone WHERE nome IN. (SELECT padre FROM paternita. WHERE figlio =ANY. (SELECT nome FROM persone. WHERE reddito>40)) 25 / 46

26 Unnesting Unnesting E spesso possibile ricondursi ad una forma flat, ma la cosa non e sempre cosi ovvia. Ad esempio, la query precedente si puo anche scrivere come: SELECT DISTINCT p.nome,p.reddito FROM persone p, paternita, persone f WHERE p.nome=padre AND figlio=f.nome AND f.reddito>40 26 / 46

27 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? In SQL non esiste l operatore di quantificazione universale 27 / 46

28 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? Tuttavia xp(x) P(x). 28 / 46

29 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? Dunque possiamo scrivere in SQL una query equivalente a quelle sopra, riformulando il problema come: 29 / 46

30 Subquery e Divisione Impiegati(CodiceImp, Nome, Sede, Ruolo, Stipendio) Sedi(Sede, Responsabile, Citta ) Le subquery permettono di eseguire la divisione relazionale. Sedi in cui sono presenti tutti i ruoli equivale a Quali sono le sedi che verificano: Per ogni ruolo, tale ruolo e presente nella sede? Quali sono le sedi che verificano: Non esiste un ruolo non presente nella sede? 30 / 46

31 Subquery e Divisione Sedi in cui non esiste un ruolo sono non presente Mediante l uso di subquery, tale interrogazione si puo formulare in SQL come: SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) 31 / 46

32 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Il blocco piu interno viene valutato per ogni combinazione di S ed I1 32 / 46

33 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Il blocco intermedio funge da divisore (riguarda I1.Ruolo) 33 / 46

34 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: 34 / 46

35 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: la subquery piu interna non restituisce nulla 35 / 46

36 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: la subquery piu interna non restituisce nulla quindi la subquery intermedia restituisce almeno una tupla 36 / 46

37 Subquery e Divisione SELECT Sede FROM Sedi AS S WHERE NOT EXISTS (SELECT FROM Impiegati I1 WHERE NOT EXISTS (SELECT FROM Impiegati I2 WHERE S.Sede=I2.Sede AND. I1.Ruolo=I2.Ruolo)) Data una sede S, se in S manca un ruolo: la subquery piu interna non restituisce nulla quindi la subquery intermedia restituisce almeno una tupla... e la clausola WHERE non e soddisfatta per S 37 / 46

38 Subquery: come eseguire la divisione relazionale Vediamo un altro esempio: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto) Chi sono gli studenti che seguono tutti i corsi di matematica? equivale a Chi sono gli studenti che verificano: Per ogni corso di matematica, lo studente segue tale corso?... e possiamo scrivere in SQL una query equivalente come: 38 / 46

39 Subquery: come eseguire la divisione relazionale Vediamo un altro esempio: persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto) Chi sono gli studenti che seguono tutti i corsi di matematica? equivale a Chi sono gli studenti che verificano: Per ogni corso di matematica, lo studente segue tale corso?... e possiamo scrivere in SQL una query equivalente come: Chi sono gli studenti che verificano: Non esiste un corso di matematica non seguito dallo studente 39 / 46

40 Subquery: come eseguire la divisione relazionale (II) Mediante l uso di subquery, tale interrogazione si puo formulare in SQL come: SELECT DISTINCT nome,cognome FROM persona AS p WHERE NOT EXISTS ( SELECT FROM ( SELECT FROM corso WHERE sigla LIKE mat% ) AS c WHERE NOT EXISTS ( SELECT FROM persona JOIN frequenza ON id persona=id studente WHERE id persona=p.id persona AND id corso=c.corso)) 40 / 46

41 SQL e Divisione Un altra possibilita di riformulare il problema per tradurlo in SQL e data da: Chi sono gli studenti che verificano: Il numero di corsi di matematica seguiti dallo studente equivale al numero totale dei corsi di matematica. 41 / 46

42 SQL e Divisione Chi sono gli studenti che verificano: Il numero di corsi di matematica seguiti dallo studente equivale al numero totale dei corsi di matematica. SELECT id persona, nome, cognome FROM persona JOIN frequenza ON id persona=id studente JOIN corso USING (id corso) WHERE corso.sigla LIKE mat% GROUP BY id persona,nome,cognome HAVING COUNT ( DISTINCT corso.id corso) = (SELECT COUNT( ) FROM corso WHERE sigla LIKE mat% ); 42 / 46

43 SQL e Divisione Chi sono gli studenti che verificano: Il numero di corsi di matematica seguiti dallo studente equivale al numero totale dei corsi di matematica.... oppure... SELECT id persona, nome, cognome FROM persona WHERE ( SELECT COUNT ( DISTINCT id corso) FROM frequenza NATURAL JOIN corso WHERE sigla LIKE mat% AND id studente=id persona) = (SELECT COUNT( ) FROM corso WHERE sigla LIKE mat% ); 43 / 46

44 Subquery: Aggiornamento dei Dati Le subquery si possono efficacemente usare per aggiornare i dati di una tabella sulla base di criteri che dipendono dal contenuto di altre tabelle DELETE FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) 44 / 46

45 Subquery: Aggiornamento dei Dati Le subquery si possono efficacemente usare per aggiornare i dati di una tabella sulla base di criteri che dipendono dal contenuto di altre tabelle DELETE FROM persona WHERE persona.id persona NOT IN (SELECT corso.id insegnante FROM corso WHERE corso.id insegnante IS NOT NULL) Elimina gli insegnanti che non tengono alcun corso 45 / 46

46 Subquerye CHECK Lo standard SQL prevede l utilizzo del delle interrogazioni annidate anche nella clausola CHECK Nota: Questa caratteristica non e supportata attualmente da PostgreSQL (per far fronte a cio si usano i trigger, cfr. Lezione 9).... nella creazione della tabella ImpiegatiPG, degli impiegati di Perugia CHECK ( NOT EXISTS (SELECT FROM ImpiegatiUD WHERE ImpiegatiUD.codiceImp=ImpiegatiUD.codicePG)) 46 / 46

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

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

Data Management Software. Il linguaggio SQL. Query Innestate. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003 DB2 Data Management Software Il linguaggio SQL Query Innestate Paolo Avallone Sr Consulting IT Specialist DB2, Data Management 10 Settembre 2003 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute

Dettagli

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi T Versione elettronica: 04.4.SQL.subquery.pdf DB di riferimento per gli esempi Imp CodImp Nome Sede Ruolo Stipendio E001 Rossi S01 Analista 2000 E002

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 5 Raffaella Gentilini 1 / 22 Sommario 1 Gruppi 2 / 22 Raggruppamenti Gruppi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 3 Raffaella Gentilini 1 / 52 Sommario 1 Il DML di SQL: Interrogazione di una BD 2 / 52 Data Manipulation Language (DML) Istruzioni del DML Le istruzioni del DML

Dettagli

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Alessandra Raffaetà. Esercizio: Cinema

Alessandra Raffaetà. Esercizio: Cinema Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema

Dettagli

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà Lezione 8 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Esercizio: Cinema

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo

Dettagli

Operatori aggregati: COUNT

Operatori aggregati: COUNT Operatori aggregati: COUNT Il numero di figli di select count(*) as NumFigliDi where Padre = '' Paternità Padre Sergio Figlio Olga Filippo Andrea Aldo l operatore aggregato (count) viene applicato al risultato

Dettagli

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

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SQL SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola SELECT s.nome As Nome, 2002 - s.annonascita As Eta, 0 As NumeroEsami FROM Studenti

Dettagli

SQL - Sottointerrogazioni

SQL - Sottointerrogazioni una delle ragioni che rendono SQL un linguaggio potente è la possibilità di esprimere interrogazioni più complesse in termini di interrogazioni più semplici, tramite il meccanismo delle subqueries (sottointerrogazioni)

Dettagli

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

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL Operatori aggregati Nelle espressioni della target list possiamo avere anche espressioni che calcolano valori a partire da insiemi

Dettagli

SQL - Sottointerrogazioni correlate

SQL - Sottointerrogazioni correlate SQL - Sottointerrogazioni correlate negli esempi visti ogni subquery viene eseguita una volta per tutte ed il valore (o insieme di valori) è usato nella clausola WHERE della query esterna è possibile definire

Dettagli

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

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri

Dettagli

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Nella clausola where si possono utilizzare valori prodotti da altre istruzioni select utilizzando any (qualsiasi) o all (tutti) insieme agli operatori di confronto Trovare nome,

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Trovare nome, cognome e matricola degli studenti che non hanno fatto esami select Matricola,Nome,Cognome from studenti where matricola all (select studente group by studente)

Dettagli

Structured Query Language

Structured Query Language IL LINGUAGGIO SQL Structured Query Language Contiene sia il DDL sia il DML, quindi consente di: Definire e creare il database Effettuare l inserimento, la cancellazione, l aggiornamento dei record di un

Dettagli

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

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione

Dettagli

Linguaggio SQL seconda parte

Linguaggio SQL seconda parte Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle

Dettagli

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

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB

Dettagli

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

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati Sommario - Progettazione di un database - Join - Valore NULL - Operatori aggregati Progettazione di un database - In un database c'è una marcata distinzione tra i valori in esso contenuti e le operazioni

Dettagli

Manuale SQL. Manuale SQL - 1 -

Manuale SQL. Manuale SQL - 1 - Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,

Dettagli

Interrogazioni in SQL

Interrogazioni in SQL Interrogazioni in SQL Corso di Basi di Dati 4 dicembre 2013 1 Interrogazioni sullo schema aziendale 1. Ottenere i nomi dei dipartimenti dislocati in piú sedi. 2. Ottenere il numero di supervisori. 3. Produrre

Dettagli

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

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna 1985 13 laura sicuro rimini 1984 esami codice Linguaggio SQL Il linguaggio SQL (Structured Query Language) è il linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali sostenuti codice matricola anno voto

Dettagli

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

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Contesto didattico Il seguente materiale didattico è

Dettagli

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

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 : SQL Operazioni di aggiornamento operazioni di inserimento: insert eliminazione: delete modifica: update di una o più ennuple di una

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE Linguaggio SQL: fondamenti 2 (1/3) Inserimento di tuple Cancellazione di tuple Modifica di tuple 4 (2/3) INSERT inserimento di nuove tuple

Dettagli

SQL e algebra relazionale

SQL e algebra relazionale SQL e algebra relazionale Il linguaggio SQL consente una maggiore espressività dell algebra relazionale grazie a costrutti che permettono: di definire join più sofisticati di ordinare le righe dei risultati

Dettagli

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

σ data 15/12/2013 data 20/12/2014 Dato lo schema: Basi di Dati Prof. Alfredo Pulvirenti A.A. 2014-2015 Prova in itinere 18 dicembre 2014 (A) EVENTO(id, titolo, data, categoria, costo_partecipazione, idcatering) ORGANIZZATORE(id,idevento)

Dettagli

Il linguaggio SQL: raggruppamenti

Il linguaggio SQL: raggruppamenti Il linguaggio SQL: raggruppamenti Sistemi Informativi T Versione elettronica: 04.3.SQL.gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono

Dettagli

Tipi di sottoquery SQL

Tipi di sottoquery SQL Tipi di sottoquery SQL È possibile specificare subquery in numerose posizioni: Con le parole chiave IN e NOT IN. Con operatori di confronto. Con le parole chiave ANY, SOME e ALL. Con le parole chiave EXISTS

Dettagli

<Nome Tabella>.<attributo>

<Nome Tabella>.<attributo> Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

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

Corso di Basi di Dati A.A. 2015/2016 Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 22/02/2016 Interrogazioni nidificate In

Dettagli

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

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni SQL [2] Concetti avanzati di SQL 2 Esempi di interrogazioni 3 Esempi di interrogazioni 4 Esempi di interrogazioni 5 Confronti che coinvolgono NULL NULL può voler dire: valore sconosciuto (esiste ma non

Dettagli

ESERCIZI SQL. Esercizio 1

ESERCIZI SQL. Esercizio 1 ESERCIZI SQL 2 Esercizio 1 3 Esercizio 1 4 Esercizio 1 Si specifichino le seguenti interrogazioni SQL sulla base di dati relazionale AZIENDA. Si mostri il risultato di ciascuna interrogazione. 1. Si restituisca

Dettagli

Le interrogazioni annidate

Le interrogazioni annidate Le interrogazioni annidate Lezione 5 lezione 5 Le interrogazioni annidate In questa lezione impareremo... a codificare operazioni insiemistiche su tabelle e relazioni a eseguire interrogazioni scalari

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle

Dettagli

Esercitazione 3 SQL 2

Esercitazione 3 SQL 2 Esercitazione 3 SQL 2 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E3-1 Schema della base di dati Persone (Nome, Sesso, Anno, Città) Discendenza (Genitore, Figlio) Stato (Città, Inizio, Fine, Stato)

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

Dettagli

Esempio di database relazionale con l utilizzo del prodotto MySQL

Esempio di database relazionale con l utilizzo del prodotto MySQL Esempio di database relazionale con l utilizzo del prodotto MySQL Marco Liverani Aprile 2015 In queste pagine viene riportato in sintesi il progetto di un database relazionale esemplificativo con cui viene

Dettagli

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

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL Basi di Dati Esercitazione 1: Interrogazioni in SQL DB di riferimento per esempi Consideriamo i seguenti schemi di una base di dati relazionale: PremioProduzione, DataAssunzione) Viene data la seguente

Dettagli

PROGETTAZIONE DI DATABASE Linguaggio SQL

PROGETTAZIONE DI DATABASE Linguaggio SQL PROGETTAZIONE DI DATABASE Linguaggio SQL Modello Concettuale (Modellazione del mondo reale) Modello Logico (Definizione del tipo e del formato dei dati) Modello Fisico (Implementazione fisica su supporti

Dettagli

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

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015 SQL Avanzato Interrogazioni complesse, trigger, viste e modifiche dello schema 2 Interrogazioni e il valore NULL Il valore NULL Logica a tre valori 3 Significato del valore NULL Valore sconosciuto Valore

Dettagli

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

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf Il linguaggio SQL: raggruppamenti Versione elettronica: SQLb-gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a singole tuple (eventualmente

Dettagli

ESERCITAZIONI ACCESS

ESERCITAZIONI ACCESS ESERCITAZIONI ACCESS MS Access 2000 Struttura di riferimento: Studente (Matricola, Cognome, Nome) Esame (Matricola, Materia, Voto, Data) CREARE LE TABELLE IN SQL: Create table STUDENTE ( matricola char(6)

Dettagli

BASI DATI: algebra relazionale

BASI DATI: algebra relazionale BASI DATI: algebra relazionale BIOINGEGNERIA ED INFORMATICA MEDICA 1 Algebra relazionale Definizione L'algebra relazionale è un insieme di operazioni (query) che servono per manipolare relazioni (tabelle).

Dettagli

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

Capitolo 4. SQL: il linguaggio di interrogazione. Originato da SEQUEL-XRM e System-R ( ) dell IBM Capitolo 4 SQL: il linguaggio di interrogazione SQL Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM Significato originario Structured Query Language Standard de facto Attuale standard ANSI/ISO

Dettagli

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

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti. Tempo a disposizione: un ora e 45 minuti. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la relazione Stipendi(Matricola,StipLordo,Tasse,Netto,OK) Spiegare (sinteticamente ma in modo chiaro) quali

Dettagli

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

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005 Basi di Dati Esercitazione SQL 19 maggio 2005 Paolo Papotti Considerando la seguente base di dati: Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto, Nome, Marca, Modello) Catalogo

Dettagli

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

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Informatica della Facoltà di Lingue e Letterature dell Università degli Studi di Torino. Qualsiasi altro Query (Interrogazioni) SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il

Dettagli

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di dati I Prova di autovalutazione 30 ottobre 2014 Basi di dati I Prova di autovalutazione 3 ottobre 214 La prova verrà discussa in aula, prevedibilmente giovedì 6 novembre. Si consiglia di svolgerlo simulando l esame, sulla carta e senza ausilio di libri

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL Eprogram ITIS V anno Unità 4 - Il linguaggio SQL Compito in classe proposto Date le seguenti tabelle: scrivi in SQL le seguenti richieste (per facilitare query complesse utilizza le viste): 1. elencare

Dettagli

Il linguaggio SQL: viste e tabelle derivate. DB di riferimento per gli esempi

Il linguaggio SQL: viste e tabelle derivate. DB di riferimento per gli esempi Il linguaggio SQL: viste e tabelle derivate Dario Maio http://bias.csr.unibo.it/maio/ [email protected] 1 DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile

Dettagli

Basi di dati: appello 14/07/06

Basi di dati: appello 14/07/06 Basi di dati: appello 14/07/06 Si consideri il seguente schema di base di dati che vuole tenere traccia dell attività di un agenzia che affitta appartamenti per vacanze nella città di Varazze. CLIENTE

Dettagli

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

Data Base. Master Bio Info Reti e Basi di Dati Lezione 6 Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica

Dettagli

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

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query Microsoft Access (parte 5) Anno accademico: 2008-2009 Per estrarre informazioni da un database si utilizzano delle query : procedure di interrogazione Si può creare più query per ogni tabella Occorre avere

Dettagli

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

Interrogare una base di dati: Algebra relazionale e SQL. Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli Interrogare una base di dati: Algebra relazionale e SQL Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli Prerequisiti Conoscenze di: Progettazione Base di Dati Modellazione Relazionale

Dettagli

Esercitazione: Interrogazioni SQL

Esercitazione: Interrogazioni SQL Laurea in Ingegneria Informatica SAPIENZA Università di Roma Insegnamento di Basi di Dati Esercitazione: Interrogazioni SQL Domenico Fabio Savo 1 Sommario 1. Creazione del database utilizzato per l esercitazione

Dettagli

VARIABILI, ASSEGNAZIONE, DECISIONI

VARIABILI, ASSEGNAZIONE, DECISIONI LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) PAG. 1 / 6 LEZIONE-TSQL-03 PROGRAMMAZIONE (VER02) T-SQL PROGRAMMAZIONE PARTE TERZA VARIABILI, ASSEGNAZIONE, DECISIONI Tratto da Gregory A. Larsen, http://www.databasejournal.com/features/mssql/article.php/3087431/t-sql-programming-part-1---defining-variables-and-if-logic.htm

Dettagli

Business Intelligence

Business Intelligence Business Intelligence Esercitazione di Laboratorio N. 1 L esercitazione ha come obiettivo l interrogazione di una base di dati relazionale mediante query SQL su un DBMS Oracle XE. Schema logico della basi

Dettagli

Interrogazioni complesse. SQL avanzato 1

Interrogazioni complesse. SQL avanzato 1 Interrogazioni complesse SQL avanzato Classificazione delle interrogazioni complesse Query con ordinamento Query con aggregazione Query con raggruppamento Query binarie Query annidate SQL avanzato 2 Esempio

Dettagli

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

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la base di dati relazionale contenente le seguenti relazioni:

Dettagli

Corso di Basi di Dati

Corso di Basi di Dati Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2016/2017 4 SQL : Structured Query Language Tiziana Catarci Ultimo aggiornamento : 22/02/2016 SQL : Structured

Dettagli