Left Join, Right Join, Full Join

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Left Join, Right Join, Full Join"

Transcript

1 Left Join, Right Join, Full Join Consideriamo il solito schema di database dell'ultima verifica. Ipotizziamo inoltre che tra le due relazioni sia impostato un vincolo di Integrità Referenziale. Modello concettuale Modello logico Studenti(cognome, nome, siglac, annonascita) ClassiScol(siglaC, aula, piano) In corsivo la chiave esterna, sottolineata la chiave primaria Studenti Pag. 1/6

2 ClassiScol Osservazioni 1) Nella tabella degli studenti vi sono due studenti che non appartengono a nessuna classe (contrassegnate da valori NULL): il primo e il terzultimo. 2) Non vi sono studenti appartenenti alle classi 5M e 5N Join Naturale (Inner Join) Sappiamo che nel join naturale compaiono tutte le tuple che si ottengono concatenando ogni tupla della prima relazione con ogni tupla della seconda relazione che hanno lo stesso valore negli attributi comuni, quindi si ignorano tuple appartenenti alla tabella Studenti che non sono stati assegnati ad alcuna classe e viceversa si ignorano classi a cui non corrispondono studenti. Usando gli operatori dell'algebra relazionale, scriviamo Studenti >< ClassiScol In MySQL, ci sono molti modi per scrivere il Join Naturale 1) SELECT * JOIN classi_tbl AS c ON s.siglac = c.siglac 2) SELECT * INNER JOIN classi_tbl AS c ON s.siglac = c.siglac 3) SELECT *, classi_tbl AS c WHERE s.siglac = c.siglac In tutti e tre i casi, l'attributo siglac è ripetuto 2 volte Pag. 2/6

3 La relazione risultante è sempre la seguente: Dal momento che comunque i nomi degli attributi chiave primaria e chiave esterna coincidono, il Natural Join può essere scritto più semplicemente come 4) SELECT * FROM studenti_tbl NATURAL JOIN classi_tbl senza avere più la necessità di assegnare un alias alle relazioni (clausola AS). In più il vantaggio è che il campo chiave (esterno o interno) appare una sola volta. Purtroppo non tutti i database supportano il Join Naturale nella forma precedente. Join esterno Nel join esterno compaiono nel risultato tutte le tuple di una relazione anche se non ci sono tuple corrispondenti nell'altra. Pag. 3/6

4 Abbiamo 3 tipi di join esterno: 1) Left join 2) Right join 3) Full join Left Join Il left join (join sinistro) estende solo le tuple del primo operando: nel risultato compaiono tutte le tuple della prima relazione e solo quelle della seconda che hanno un valore corrispondente In MySQL: SELECT * LEFT JOIN classi_tbl AS c ON s.siglac = c.siglac Scriviamo usando gli operatori dell'algebra relazionale Risultato: Studenti >< LEFT ClassiScol Notiamo la presenza dell'attributo siglac che appare due volte. Per eliminarlo occorrebbe effettuare una proiezione della relazione appena ottenuta. Notiamo inoltre che il database MySQL completa inserendo dei valori NULL gli attributi numstud e aula nelle tuple degli studenti che non appartenevano ad alcuna classe (siglac = NULL). In maniera analoga scriviamo Right Join Studenti >< RIGHT ClassiScol Pag. 4/6

5 In MySQL: SELECT * RIGHT JOIN classi_tbl AS c ON s.siglac = c.siglac Le righe ottenute nella nuova relazione comprendono tutte le classi, anche quelle per cui non esistono studenti corrispondenti. Risultato: Anche in questo caso, il database inserisce nelle due ultime tuple della relazione risultante dei valori NULL. Scriviamo Full Join Studenti >< FULL ClassiScol Nella tabella risultante comparirebbero tutti gli studenti e tutte le classi. Purtroppo MySQL non dispone di un comando diretto (come potrebbe essere il seguente SELECT * FULL JOIN classi_tbl AS c ON s.siglac = c.siglac Tuttavia possiamo usare una Union per simulare il comportamento di una Full Join (SELECT * LEFT JOIN classi_tbl AS c ON s.siglac = c.siglac) UNION (SELECT * RIGHT JOIN classi_tbl AS c ON s.siglac = c.siglac) Pag. 5/6

6 Ecco il risultato: Pag. 6/6

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 46 Sommario 1 Join di Tabelle Join Naturale Theta Join Join Esterno 2 3 Funzioni d aggregazione La Clausola GROUP BY La Clausola HAVING

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

Istituto Statale E.Torricelli Liceo Scientifico Tecnologico-Tecnico Industriale. Compiti Estivi Informatica

Istituto Statale E.Torricelli Liceo Scientifico Tecnologico-Tecnico Industriale. Compiti Estivi Informatica Studiare ciascuno degli argomenti proposti nel corso dell anno sul libro di testo (secondo le pagine assegnate) oppure sul sito comunicato all inizio dell anno con le stesse credenziali: 1) Da pag. 352

Dettagli

DATABASE PER IL WEB. Programmazione Web 1

DATABASE PER IL WEB. Programmazione Web 1 DATABASE PER IL WEB Programmazione Web 1 Archite3ura web con database Client Tier Web/App Tier DB Tier Client Web / App Server Database Il server web comunica con un altro server che con8ene il la banca

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

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

SQL QUERY: Le interrogazioni del database

SQL QUERY: Le interrogazioni del database Appunti della lezione di Database del 20 ottobre 2016 (mattina) Studenti: D Amuri Giuseppe, De Luca Federico Professore: Mario Bochicchio SQL QUERY: Le interrogazioni del database Per effettuare un interrogazione

Dettagli

QL (Query Language) Alice Pavarani

QL (Query Language) Alice Pavarani QL (Query Language) Alice Pavarani QL Query Language Linguaggio di interrogazione dei dati, permette di: Interrogare la base di dati per estrarre informazioni Elaborare i dati Il risultato di un interrogazione

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

Sommario. Introduzione... 13

Sommario. Introduzione... 13 Sommario Introduzione... 13 1. Database pro e contro... 19 A cosa serve conoscere i database?...19 Le alternative alla gestione manuale...22 Quando non serve un database?...24 Domande ed esercizi...26

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

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

Basi di Dati. Esercitazione 2: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL Basi di Dati Esercitazione 2: Interrogazioni in SQL DB di riferimento per esempi Consideriamo i seguenti schemi di una base di dati relazionale: MODELLI (cod_modello,nome,versione,cod_fabbrica) VEICOLI

Dettagli

Decomposizione senza perdita

Decomposizione senza perdita Decomposizione senza perdita Data una relazione r su X, se X 1 e X 2 sono due sottoinsiemi di X la cui unione è X stesso, allora il join delle due relazioni ottenute per proiezione di r su X 1 e X 2 è

Dettagli

Tipi di operatori. Gli operatori dell algebra relazionale sono classificabili nelle seguenti categorie:

Tipi di operatori. Gli operatori dell algebra relazionale sono classificabili nelle seguenti categorie: lgebra relazionale Il linguaggio per interrogare ed aggiornare la base di dati fa parte del modello di questi ultimi. Un operazione di aggiornamento può essere vista come una funzione che, data un istanza

Dettagli

Lezione 6. Algebra e Calcolo Relazionale

Lezione 6. Algebra e Calcolo Relazionale Lezione 6 Algebra e Calcolo Relazionale 1 Sommario Esempio di Applicazione con Database (AZIENDA) Algebra Relazionale Operazioni Relazionali Unarie Operazioni dell Algebra Relazionale dalla teoria degli

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

Tornando all esempio..

Tornando all esempio.. Tornando all esempio.. gli impiegati hanno un unico stipendio Impiegato Stipendio i progetti hanno un unico bilancio Progetto Bilancio in ciascun progetto, un impiegato svolge una sola funzione Impiegato

Dettagli

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Domande utili alla preparazione dell orale di Informatica all Esame di Stato Domande utili alla preparazione dell orale di Informatica all Esame di Stato 1.Al livello fisico un database si appoggia ai files per contenere i suoi dati? 2.Esistono altri modelli di organizzazione oltre

Dettagli

RELAZIONI E BASI DI DATI

RELAZIONI E BASI DI DATI Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno :Modello Relazionale (2)-Relazioni e DB, valori nulli Prof.

Dettagli

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 3. Panoramica su SQL Prof. Mauro Giacomini Sommario Introduzione Istruzione SELECT Tipi di Join Subquery Comandi DML Creazione delle tabelle Introduzione

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 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

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