Torna all'elenco degli articoli Articoli
Tempo di lettura: 9 minuti

Come esercitarsi con le JOIN SQL

Non c'è modo migliore per imparare le JOIN SQL che la pratica. Tuttavia, probabilmente ci saranno degli ostacoli lungo il percorso. Ne illustrerò alcuni e fornirò idee su come superarli. Questo articolo non vi trasformerà in esperti di SQL JOINs, ma vi mostrerà come diventarlo. Quindi, cominciamo!

Le sfide della pratica SQL JOINs

È difficile rispondere alla domanda "Come si padroneggia SQL JOINs?". Tuttavia, è facile rispondere a "Come si fa a esercitarsi? SQL JOINs?" Questo è il percorso per padroneggiare SQL JOINs.

Se state leggendo questo articolo, probabilmente avete già iniziato a conoscere i database e a capire cosa sono. Inoltre, probabilmente avete compreso alcuni concetti di base come le tabelle, le chiavi primarie e le chiavi esterne, la scrittura di semplici istruzioni SELECT, ecc.

Quindi, siete pronti per iniziare a scrivere query più complesse, ma probabilmente dovrete affrontare alcune sfide. Le sfide che affronto in questo articolo sono quelle che ho sperimentato quando imparo qualcosa di nuovo. Elenchiamo quindi le sfide più comuni.

Utilizzare i dati giusti

Non è una novità dire che i database sono incentrati sui dati. Si parte da dati reali che vengono archiviati digitalmente in un database. Poi, queste informazioni devono essere recuperate dal database e trasformate in rapporti reali. Non riesco a immaginare la creazione di report significativi dai database senza l'uso delle JOIN.

Forse lavorate in un istituto finanziario, forse analizzate i risultati delle elezioni o forse vi chiedete come gli utenti del vostro gioco mobile lo stiano effettivamente utilizzando. Forse vi state preparando per un colloquio. In ogni caso, dovrete sapere come gestire migliaia o milioni di record in molte tabelle diverse.

Il vostro obiettivo sarà quello di scrivere query che restituiscano esattamente ciò che desiderate. Per farlo, dovrete sapere come scrivere il codice SQL e avere almeno un'idea del risultato finale.

Quando si fa pratica con SQL JOINs, una sfida può essere quella di trovare un set di dati appropriato. Probabilmente le aziende non condivideranno i loro dati per fare pratica, ma fare pratica con set di dati inadeguati non è una buona opzione. Se la query non restituisce nulla, non si può essere certi che la query sia stata scritta in modo errato o che il set di dati non contenga nulla che corrisponda ai criteri.

Il dataset ideale consente di ottenere risultati per le query più comuni e anche per alcuni casi speciali interessanti. Tecnicamente, è possibile creare un set di dati da soli, ma ci sono alcune sfide significative:

  1. Dovrete sapere come crearlo, occuparvi dei dati, delle chiavi, degli inserimenti, ecc.
  2. Dovrete sapere quali casi volete coprire con i dati. Questo è difficile perché si sta facendo pratica per imparare questo e non il contrario.
  3. Il set di dati deve essere sufficientemente grande: non possono essere solo poche righe in ogni tabella. Ci vuole tempo per raccogliere informazioni reali (ad esempio, elenchi di città e paesi) o per produrre i propri dati (dipendenti immaginari, ruoli, ecc.).

Trovare gli esempi giusti

Non serve solo un buon set di dati, ma anche esempi che aiutino a imparare in modo efficiente ed efficace. Si possono trovare facilmente migliaia di esempi su Internet, ma alcuni potrebbero essere troppo semplici, mentre altri potrebbero essere al di là di ciò che si può capire in quel momento. La cosa migliore è passare passo dopo passo dagli esempi più semplici a quelli più complessi.

Gli esempi devono essere facilmente comprensibili e vicini ai problemi e alle implementazioni che incontrerete nel vostro lavoro. Le tabelle dovrebbero essere quelle utilizzate in quasi tutti i database (ad esempio, utenti, clienti, studenti, auto, ecc.). Questo renderà gli esempi più comprensibili e applicabili a situazioni reali.

Bilanciare teoria e applicazione

La maggior parte delle persone che imparano a scrivere SQL JOINs non sono molto interessate alla teoria che c'è dietro. Anche se è sempre bene capire la teoria, la situazione non sempre ci permette di dedicarle tanto tempo. Questo vale per quasi tutto nella vita e la chiave è trovare un equilibrio.

Dovreste imparare la teoria quanto basta per capire cosa state facendo quando scrivete le query. Questo non significa che non si debba imparare il più possibile, ma che bisogna farlo per gradi. Dovete sapere cosa vi viene richiesto, quale JOIN usare e perché.

Esercitarsi su SQL JOINs Online

Indipendentemente da ciò che si sta imparando, si dovrebbe iniziare con le basi e migliorare le proprie conoscenze nel tempo, né troppo velocemente né troppo lentamente. Quindi, qual è il modo migliore per imparare SQL JOINs?

Personalmente amo la storia. È una delle mie passioni (oltre ai database, ovviamente). Il mio partner dice spesso che sono una "fonte" di fatti storici bizzarri. E sono d'accordo. La maggior parte di questi fatti bizzarri li trovo attraverso i video. Ci sono video fantastici disponibili su Internet. Vorrei averli avuti quando andavo a scuola.

Ma c'è un problema con questo approccio quando si impara SQL JOINs e la maggior parte delle altre materie informatiche. Non si può semplicemente guardare un video di qualcun altro che codifica e aspettarsi di avere quella conoscenza. Anche se imparerete sicuramente qualcosa, non c'è niente di meglio che scrivere il codice da soli.

Quando si guardano i video, si danno le cose per scontate e non si impara facendo. Quando si inizia a scrivere il codice, ci si rende conto che si sta veramente imparando a usare SQL JOINs. Non sto dicendo che i corsi video non siano una parte importante del processo di apprendimento. Credo solo che non sia possibile padroneggiare le JOIN SQL solo guardando i video.

Pertanto, suggerisco vivamente di imparare SQL JOINs scrivendo codice. Un modo per farlo è esercitarsi online.

Condividerò una delle mie esperienze personali. Sono sempre stato entusiasta di installare un nuovo ambiente di sviluppo. Dopo ogni installazione, avviavo il programma e, naturalmente, vedevo una schermata vuota. Ok, questo era prevedibile. Quindi, il passo successivo era di solito quello di cercare esempi online su Google, ma questo non era l'ideale.

Sebbene siate amanti dei libri, dei video o anche di Google, credo che non ci sia modo migliore di capire le cose se non quello di seguire un corso su ciò che vi crea problemi. Riceverete esempi preparati e descritti in modo appropriato. Inoltre, questi esempi saranno ordinati in modo da poter progredire lentamente verso problemi più complicati.

Tipi di JOIN ed esempi di SQL

SQL supporta diversi tipi di JOIN per restituire il risultato desiderato. Ecco le JOIN più conosciute.

GIUNTA INTERNA

INNER JOIN viene utilizzato per unire due tabelle in base a una condizione. Le tabelle vengono unite utilizzando una condizione scritta dopo ON. Di solito si utilizzano gli attributi chiave primaria e chiave esterna, ma sono possibili variazioni. Verranno restituite solo le righe delle tabelle incluse in INNER JOIN che hanno una coppia definita dalla condizione.

SELECT *
FROM student
INNER JOIN room ON student.room_id = room.id;

CONGIUNZIONE SINISTRA

LEFT JOIN fa la stessa cosa di INNER JOIN, ma prende due tabelle, la tabella "sinistra" e la tabella "destra". La condizione è scritta dopo ON. Restituisce tutte le righe della tabella "sinistra", anche quelle che non hanno una coppia nella tabella "destra".

SELECT *
FROM student
LEFT JOIN room ON student.room_id = room.id;

GIUNTA DESTRA

RIGHT JOIN fa la stessa cosa di LEFT JOIN, ma prende tutte le righe dalla tabella "destra" e le unisce alla tabella "sinistra". Poiché LEFT JOIN e RIGHT JOIN sono simili e si può simulare RIGHT JOIN con LEFT JOIN (basta cambiare l'ordine delle tabelle nella join), RIGHT JOIN viene usato raramente. Un'altra ragione è che si legge dall'alto verso il basso e da sinistra verso destra. Pertanto, la leggibilità della query utilizzando LEFT JOIN è più intuitiva.

SELECT *
FROM student
RIGHT JOIN room ON student.room_id = room.id;

JOIN multipli

Le JOIN multiple consentono di unire più di due tabelle. Unire più di due tabelle è piuttosto comune. Si useranno le stesse JOIN menzionate finora, oltre ad alcune regole applicate ad esse. Fate attenzione che ogni JOIN abbia le proprie condizioni scritte dopo ON. Per aumentare la leggibilità e semplificare le cose, mettete ogni JOIN su una nuova riga.

SELECT *
FROM student
INNER JOIN room ON student.room_id = room.id
INNER JOIN equipment ON equipment.room_id = room.id;

GIUNZIONE COMPLETA

FULL JOIN restituisce tutte le righe della tabella "sinistra" e "destra", anche se hanno una coppia. Alcuni DBMS supportano FULL JOIN, mentre altri no. È possibile simulare facilmente FULL JOIN utilizzando la combinazione di LEFT JOIN e RIGHT JOIN, come mostrato di seguito.

SELECT movie.*, director.*
FROM movie
LEFT JOIN director ON movie.director_id = director.id
UNION
SELECT movie.*, director.*
FROM movie
RIGHT JOIN director ON movie.director_id = director.id;

Auto-giunzione

Leauto-unioni non sono un tipo di JOIN, ma un modo per usare una tabella più di una volta in JOIN. Ciò significa che si unirà la tabella con se stessa. Quindi, se si hanno due tabelle, una sarà a sinistra e l'altra a destra di JOIN. Ecco alcuni esempi di quando è necessario farlo: "elencare tutti i dipendenti e tutti gli altri dipendenti più anziani di questo dipendente" e "scoprire se ci sono direttori con una retribuzione inferiore a quella di un qualsiasi dipendente". In parole povere, si ha bisogno di dati provenienti dalla stessa tabella due volte e di unire/confrontare queste due serie di dati in base a una condizione.

JOIN non equi

Finora abbiamo usato solo equazioni nelle condizioni di JOIN (dopo la parola chiave ON). Tuttavia, questo non è obbligatorio. Si può fare tutto ciò che si vuole in una condizione, ma bisogna essere consapevoli che questo avrà un impatto sull'output (e, naturalmente, assicurarsi di sapere cosa si sta facendo).

SELECT *
FROM student s1
INNER JOIN student s2 on s1.id < s2.id
ORDER BY s1.id, s2.id;

Si noti che la query di cui sopra è un esempio di JOIN (la tabella è stata usata due volte), oltre che di . student due volte), così come una JOIN non equa (usando "<" invece di "=" nella condizione s1.id < s2.id). La query stessa restituisce tutti gli studenti combinati con altri studenti (tranne loro). Ogni combinazione viene restituita esattamente una volta.

Volete saperne di più su SQL JOINs? Guardate un episodio della nostra serie We Learn SQL su Youtube. Verificate se sapete già tutto sui diversi tipi di JOIN.

Conclusione

Non esiste una risposta semplice alla domanda "Come si fa a padroneggiare SQL JOINs?". L'unico modo per farlo è provare, fallire e infine riuscire. Ci vorrà meno o più tempo in base alle vostre conoscenze attuali e al modo in cui vi eserciterete. Questo ci porta di nuovo alla domanda "Come si fa a fare pratica? SQL JOINs?" Alla fine, questa è la domanda a cui dobbiamo rispondere.

Qualunque sia la strada scelta, assicuratevi di ottenere il massimo dall'investimento di tempo e denaro. Mentre il denaro può essere guadagnato, nessuno vi restituirà il vostro tempo. Il mio suggerimento è di esercitarsi il più possibile con degli esempi.

Se volete guardare qualche video come parte del vostro processo di apprendimento, vi consiglio questo. Penso che vi piacerà, soprattutto se siete appassionati di SQL JOINs e di fantascienza.