Left Join, Right Join, Full Join
|
|
|
- Faustino Leonardi
- 7 anni fa
- Visualizzazioni
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 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
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 è
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
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
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,
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
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
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
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).
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
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)
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
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 è
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
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
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
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
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
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.
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
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
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
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)
