Sissejuhatus
See interaktiivne tööriist aitab sul samm-sammult mõista, kuidas erinevad SQL-päringu osad (klauslid) mõjutavad lõpptulemust. Päringu loogiline täitmise järjekord on järgmine:
Vali allpool olevatest valikutest klauslid või kliki ülaloleval indikaatoril, et näha, kuidas päring ja selle tulemus vastavalt muutuvad.
Näidispäring:
-- (Järjekord päringu kirjutamisel on erinev loogilisest täitmisest)
SELECT
M.magaja_id, M.perenimi, Count(*) AS magamiste_arv
FROM
Magaja M INNER JOIN Magamine Mn ON M.magaja_id = Mn.magaja_id
WHERE
Mn.kestus > 30
GROUP BY
M.magaja_id, M.perenimi
HAVING
Count(*) > 5
ORDER BY
magamiste_arv DESC, M.perenimi, M.magaja_id;
Interaktiivne päringu koostamine
Vali päringu osad (vastavalt loogilisele järjekorrale):
Koostatud SQL päring (kirjutamise järjekord):
-- Vali klausleid, et näha päringut --
Päringu tulemus (simuleeritud):
Vali klausleid, et näha tulemustabelit.
Klauslite selgitused
1. FROM / JOIN
Loogiliselt esimene samm: määrab andmete allika(d). Siin ühendatakse Magaja
ja Magamine
tabelid ühise magaja_id
alusel.
2. WHERE
Filtreerib FROM
/JOIN
sammu tulemusena saadud ridu. Ainult need read, kus kestus > 30
, lähevad edasi järgmistesse sammudesse.
3. GROUP BY
Rühmitab WHERE
filtri läbinud read. Siin rühmitatakse sama magaja_id
ja perenimi
väärtusega read kokku.
4. HAVING
Filtreerib GROUP BY
loodud gruppe. Töötab sarnaselt WHERE
-le, aga gruppide, mitte ridade tasemel. Siin jäetakse alles grupid, kus ridu (magamisi) on rohkem kui 5.
5. SELECT
Valib, millised veerud ja/või arvutatud väärtused lõpptulemusse kaasata. Kui GROUP BY
on kasutuses, saab siin kasutada koondandmete leidmise funktsioone e agregeerimisfunktsioone (nagu Count(*)
) ja grupeerimise aluseks olnud veerge. Ilma GROUP BY
-ta valitakse veerud ridade tasemel.
Tähtis: Kuigi SELECT
kirjutatakse SQL päringus tavaliselt esimesena, siis loogiliselt täidetakse see alles pärast FROM, WHERE, GROUP BY, HAVING
samme.
6. ORDER BY
Viimane loogiline samm enne tulemuse kuvamist: sorteerib SELECT
klauslis määratud read. Siin sorteeritakse magamiste arvu järgi kahanevalt ja seejärel nime ning ID järgi.