SQL-työhaastatteluun valmistautuminen · Oppitunti

Looginen kyselyn suoritusjärjestys

Miksi FROM suoritetaan ennen SELECTiä ja miten todellisen suoritusjärjestyksen tunteminen auttaa vastaamaan lukuisiin kompakysymyksiin

Oppitunti 2/413 vaihetta

Looginen kyselyn suoritusjärjestys on ilmainen SQL-työhaastatteluun valmistautuminen-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-työhaastatteluun valmistautuminen-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL-työhaastatteluun valmistautuminen-kurssilla on yhteensä 4 oppituntia.

Kysymys, joka avaa tien tusinaan muuhun

Haastattelijat kysyvät "Missä järjestyksessä kysely oikeasti suoritetaan?", koska vastaus selittää monia asioita: miksi SELECT-alias ei toimi WHERE-lauseessa, miksi WHERE ei voi suodattaa aggregaattia ja paljon muuta.

Kirjoitusjärjestys ja looginen järjestys

Kun kirjoitatte kyselyn, aloitatte SELECT-lauseesta, mutta moottori suorittaa sen aloittaen FROM-lauseesta. Tämä ero ja SELECT-lauseen lähes viimeinen käsittelyvaihe aiheuttavat suurimman osan hämmennyksestä.

Täydellinen looginen järjestys

Täydellinen looginen järjestys on seuraava: FROM, sitten WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY ja lopuksi LIMIT. Kaikki alla olevat erityistapaukset seuraavat suoraan tästä luettelosta.

Miksi FROM suoritetaan ensin

FROM suoritetaan ensin, koska moottori tarvitsee käsiteltäviä rivejä ennen kaikkea muuta. Se muodostaa lähderivit, minkä jälkeen WHERE voi päättää, mitkä niistä säilytetään.

SELECT e.name, d.name AS dept
FROM employees e
JOIN departments d ON d.id = e.department_id
WHERE e.salary > 50000;

Kompastuskivi: alias ei toimi WHERE-lauseessa

Useimmin kysytty seuraus on tämä: SELECT-aliasia ei voi käyttää WHERE-lauseessa, koska WHERE suoritetaan ennen SELECT-lauseketta. Alla oleva koodi näyttää virheen ja korjauksen: toistakaa lauseke.

-- FAILS: alias 'annual' unknown in WHERE
SELECT salary * 12 AS annual
FROM employees
WHERE annual > 600000;

-- FIX: repeat the expression
SELECT salary * 12 AS annual
FROM employees
WHERE salary * 12 > 600000;

Kompastuskivi: WHERE ei näe aggregaatteja

WHERE suoritetaan ennen ryhmittelyä, joten se ei voi käsitellä aggregaatteja, kuten COUNT(). Sitä varten on HAVING: WHERE suodattaa rivejä ja HAVING ryhmiä aggregoinnin jälkeen.

-- WHERE cannot use COUNT(*)
SELECT department, COUNT(*) AS headcount
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;

Miksi ORDER BY voi käyttää aliaksia

Vastaavasti ORDER BY suoritetaan SELECT-lauseen jälkeen, joten se voi käyttää SELECT-aliaksia. Sama alias, eri suoritusajankohta – siksi se toimii tässä, mutta ei WHERE-lauseessa.

SELECT name, salary * 12 AS annual
FROM employees
ORDER BY annual DESC;

DISTINCT-lauseen paikka

DISTINCT suoritetaan SELECT-lauseen jälkeen mutta ennen ORDER BY -lausetta. Koska se poistaa päällekkäisyydet tulossarakkeiden perusteella, voitte järjestää tulokset vain sellaisen sarakkeen perusteella, joka säilyi SELECT-luettelossa.

-- ERROR in many engines:
-- ORDER BY column not in the DISTINCT select list
SELECT DISTINCT department
FROM employees
ORDER BY hire_date;

Kokonaisen kyselyn suoritusvaiheiden jäljittäminen

Jäljitetään oikea kysely vaihe vaiheelta: FROM lukee rivit, WHERE suodattaa, GROUP BY ryhmittelee, HAVING säilyttää ryhmät, SELECT laskee tulokset, ORDER BY järjestää ne ja LIMIT rajaa määrän.

SELECT customer_id, SUM(amount) AS total
FROM orders
WHERE status = 'paid'
GROUP BY customer_id
HAVING SUM(amount) > 1000
ORDER BY total DESC
LIMIT 10;

Looginen ja fyysinen suoritus

Yksi vaikutuksen tekevä yksityiskohta on tämä: kyseessä on looginen järjestys, joka määrittää oikean lopputuloksen. Optimoijan fyysinen suoritusmuoto voi poiketa siitä, kunhan se tuottaa samat rivit.

Muistisääntö suoritusjärjestykselle

Muistisääntö: kuvitelkaa rivien virtaavan putkessa alaspäin niin, että jokainen vaihe antaa seuraavalle pienemmän joukon. Kun jokin epäonnistuu, tarkistakaa, tuottiko jokin aiempi vaihe sen tarvitseman tiedon.

Pikatesti

Soveltakaa suoritusjärjestystä virheen löytämiseen.

Kertaus

Kertaus: looginen järjestys on FROM, WHERE, GROUP BY, HAVING, SELECT, DISTINCT, ORDER BY, LIMIT. WHERE suoritetaan ennen SELECT-lauseketta, joten aliakset eivät toimi; ORDER BY suoritetaan sen jälkeen, joten aliakset toimivat.

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
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Looginen kyselyn suoritusjärjestys” ilmainen?

Kyllä – oppitunnin ”Looginen kyselyn suoritusjärjestys” 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-työhaastatteluun valmistautuminen-kurssin, päivitä CoddyKit PROhon. SQL-työhaastatteluun valmistautuminen-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Looginen kyselyn suoritusjärjestys”?

Miksi FROM suoritetaan ennen SELECTiä ja miten todellisen suoritusjärjestyksen tunteminen auttaa vastaamaan lukuisiin kompakysymyksiin Harjoittelet SQL-työhaastatteluun valmistautuminen-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL-työhaastatteluun valmistautuminen-opiskelun?

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

Kuinka kauan ”Looginen kyselyn suoritusjärjestys”-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-työhaastatteluun valmistautuminen-oppitunnilla?

Kyllä. Jokainen SQL-työhaastatteluun valmistautuminen-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. Mikä SQL on ja miksi haastattelijat kysyvät siitä
  2. Looginen kyselyn suoritusjärjestys
  3. Pääavaimet, viiteavaimet ja rajoitteet
  4. Skeeman lukeminen paineen alla
← Takaisin: SQL-työhaastatteluun valmistautuminen