SQL Academy · Oppitunti

INNER JOIN -liitoksen toimintaperiaate

Ymmärtäkää INNER JOIN suodatettuna karteesiseen tulona, kirjoittakaa liitosehdot ja tulkitkaa liitosten EXPLAIN-tulostetta.

Oppitunti 2/413 vaihetta

INNER JOIN -liitoksen toimintaperiaate on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

INNER JOIN

INNER JOIN palauttaa vain rivit, joille löytyy vastaava pari MOLEMMISTA tauluista ON-ehdon perusteella.

Perustason INNER JOIN

Hakekaa jokainen tilaus käyttäjineen:

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;

Useita ehtoja ON-lausekkeessa

ON-lauseke on tavallinen totuusarvolauseke:

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;

Aliakset

Aliakset lyhentävät kyselyitä ja estävät epäselvät sarakeviittaukset:

SELECT o.id, u.email
FROM orders AS o          -- AS is optional
JOIN users  AS u ON u.id = o.user_id;

Kolmen tai useamman taulun liittäminen

Ketjuttakaa liitokset toistamalla JOIN-lauseke:

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)

Kun liitossarakkeella on sama nimi molemmissa tauluissa, voitte kirjoittaa USING — se poistaa sarakkeen monistumisen tulosteessa:

SELECT o.id, total, email
FROM orders
JOIN users USING (user_id);   -- requires both tables to have user_id

NATURAL JOIN

Liittää taulut kaikkien samannimisten sarakkeiden perusteella — varokaa sitä, sillä rakenne on hauras, kun sarakkeita lisätään.

-- Avoid in production code:
SELECT * FROM orders NATURAL JOIN users;

JOIN-ehdot ja WHERE-lauseke

INNER JOIN -liitoksessa ON-lausekkeen ehto vastaa loogisesti WHERE-lausekkeen ehtoa. Käytäntö: JOIN-suhteen määrittävät ehdot sijoitetaan ON-lausekkeeseen ja rivien suodatusehdot WHERE-lausekkeeseen.

SELECT * FROM orders o
JOIN users u ON u.id = o.user_id   -- join condition
WHERE u.country = 'US';            -- row filter

Tulosten monistuminen

Jos yksi taulun A rivi täsmää kolmeen taulun B riviin, tuloksessa on kolme riviä. Tämä on normaalia — mutta yllättävää, jos se unohtuu. Kun käytätte aggregaattifunktiota, käyttäkää COUNT(*)-funktiota huolellisesti.

Esikatsaus itseviittaukseen

Voitte liittää taulun itseensä antamalla sen jokaiselle esiintymälle eri aliaksen:

SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;

INNER JOIN -liitoksen suorituskyky

Sisäliitokset ovat nopeita, kun:

  • Liitossarake on indeksoitu (erityisesti vierasavainpuolella)
  • Toinen taulu on pieni (hash-liitos) tai molemmat taulut on lajiteltu (merge-liitos)
  • Suodatatte aikaisin, jotta väliaikaisten rivien määrä pysyy pienenä

Kertaus

INNER JOIN säilyttää vain vastaavat parit.

  • JOIN tarkoittaa oletusarvoisesti INNER JOIN -liitosta
  • ON ilmaisee liitosehdon
  • Aliakset pitävät kyselyt lyhyinä
  • Liitossarakkeet kannattaa indeksoida

Pikatarkistus

Mitä orders INNER JOIN users ON users.id = orders.user_id palauttaa, jos tilaukselle ei löydy vastaavaa käyttäjää (orpoa)?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”INNER JOIN -liitoksen toimintaperiaate” ilmainen?

Kyllä – oppitunnin ”INNER JOIN -liitoksen toimintaperiaate” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”INNER JOIN -liitoksen toimintaperiaate”?

Ymmärtäkää INNER JOIN suodatettuna karteesiseen tulona, kirjoittakaa liitosehdot ja tulkitkaa liitosten EXPLAIN-tulostetta. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”INNER JOIN -liitoksen toimintaperiaate”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miksi liitoksia käytetään (relaatiomallin kertaus)
  2. INNER JOIN -liitoksen toimintaperiaate
  3. LEFT/RIGHT JOIN ja OUTER-liitokset
  4. Itseliitokset ja aliakset
← Takaisin: SQL Academy