Meccanismi di INNER JOIN
Comprenda INNER JOIN come un prodotto cartesiano filtrato, scriva le condizioni di join e legga l’output di EXPLAIN per le join
Meccanismi di INNER JOIN è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Il INNER JOIN
INNER JOIN restituisce solo le righe che hanno una coppia corrispondente in ENTRAMBE le tabelle, in base alla condizione ON.
INNER JOIN di base
Recuperi ogni ordine insieme al relativo utente:
SELECT o.id, o.total, u.email
FROM orders o
INNER JOIN users u ON u.id = o.user_id;
-- INNER is the default — you can also write:
SELECT o.id, o.total, u.email
FROM orders o
JOIN users u ON u.id = o.user_id;Più condizioni in ON
La clausola ON è una normale espressione booleana:
SELECT *
FROM events e
JOIN sessions s
ON s.user_id = e.user_id
AND e.created_at BETWEEN s.start_at AND s.end_at;Alias
Gli alias rendono le query più brevi ed evitano riferimenti ambigui alle colonne:
SELECT o.id, u.email
FROM orders AS o -- AS is optional
JOIN users AS u ON u.id = o.user_id;Collegare tre o più tabelle
Concateni i join ripetendo la clausola JOIN:
SELECT o.id, u.email, p.name AS product
FROM orders o
JOIN users u ON u.id = o.user_id
JOIN products p ON p.id = o.product_id;USING (column)
Quando la colonna di join ha lo stesso nome in entrambe le tabelle, può scrivere USING: la colonna non viene duplicata nell'output:
SELECT o.id, total, email
FROM orders
JOIN users USING (user_id); -- requires both tables to have user_idNATURAL JOIN
Esegue il join su ogni colonna con lo stesso nome. Attenzione: è fragile quando vengono aggiunte colonne.
-- Avoid in production code:
SELECT * FROM orders NATURAL JOIN users;Condizioni di JOIN e WHERE
Per un INNER JOIN, una condizione in ON è logicamente equivalente alla stessa condizione in WHERE. Convenzione: inserisca in ON i filtri che definiscono la relazione di JOIN e in WHERE i filtri sulle righe.
SELECT * FROM orders o
JOIN users u ON u.id = o.user_id -- join condition
WHERE u.country = 'US'; -- row filterMoltiplicazione dei risultati
Se una riga di A corrisponde a tre righe di B, il risultato contiene tre righe. È normale, ma può sorprendere se lo si dimentica. Se esegue un'aggregazione, utilizzi COUNT(*) con attenzione.
Anteprima del self-join
È possibile eseguire il join di una tabella con se stessa assegnando un alias diverso a ogni istanza:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Prestazioni di INNER JOIN
I join interni sono veloci quando:
- La colonna di join è indicizzata, soprattutto sul lato FK
- Una tabella è piccola, per un hash join, oppure entrambe sono ordinate, per un merge join
- Si filtra in anticipo per mantenere basso il numero di righe intermedie
Riepilogo
INNER JOIN conserva solo le coppie corrispondenti.
- JOIN equivale a INNER JOIN per impostazione predefinita
- ON esprime la condizione di join
- Gli alias mantengono brevi le query
- Le colonne di join dovrebbero essere indicizzate
Verifica rapida
Che cosa restituisce orders INNER JOIN users ON users.id = orders.user_id quando un ordine non ha un utente corrispondente, cioè è orfano?
Domande Frequenti
La lezione «Meccanismi di INNER JOIN» è gratuita?
Sì — il testo completo di «Meccanismi di INNER JOIN» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Meccanismi di INNER JOIN»?
Comprenda INNER JOIN come un prodotto cartesiano filtrato, scriva le condizioni di join e legga l’output di EXPLAIN per le join Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Meccanismi di INNER JOIN»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché usare le join (ripasso del modello relazionale)
- Meccanismi di INNER JOIN
- LEFT/RIGHT JOIN e join OUTER
- Self-join e alias