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.