SQL klauslite mõju uurija

See leht aitab mõista, kuidas erinevad SQL klauslid mõjutavad päringu tulemust.

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:

1. FROM/JOIN 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 6. ORDER BY

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.